4. 数值转换函数重载
内置函数
对应的特殊方法
说明
int(obj)
__int__()
将对象转换为整数
float(obj)
__float__()
将对象转换为浮点数
complex(obj)
__complex__()
将对象转换为复数
bool(obj)
__bool__()
返回对象的布尔值(True 或 False)
数值转换函数重载说明
数值转换函数重载的方法的返回值类型必须和函数名类型一致。
示例
# 数值转换函数重载 示例
class ElectricCar:
def __init__(self, brand, eq):
self.brand = brand # 品牌
self.e_quantity = eq # 电量
def __int__(self):
return int(self.e_quantity)
def __float__(self):
return float(self.e_quantity)
def __complex__(self):
return float(self.e_quantity) + 2j
def __bool__(self):
return self.e_quantity > 5
ec = ElectricCar('比亚迪', 2.1234)
print('int(ec):', int(ec))
print('float(ec):', float(ec))
print('complex(ec):', complex(ec))
print('bool(ec):', bool(ec))
if ec:
print('ec为真!')
else:
print('ec为假!')
complex 函数重载说明
- complex(obj) 方法优先取
__complex__(self)
方法的返回值作为结果返回。 - 如果自定义对象内没有
__complex__(self)
方法,则会用__float__(self)
方法的返回值作为实部,用0j作为虚部返回。 - 如果再没有
__float__(self)
方法则会触发 TypeError 类型的错误并进入异常状态。
Python中任何对象都一定能取布尔值。
布尔测试函数重写说明:
- 当自定义类内有
__bool__(self)
方法时,以此方法的返回值作为 bool(obj) 的返回值。 - 当不存在
__bool__(self)
方法时,bool(x)返回__len__(self)
方法的返回值是否为零来测试布尔值。 - 当不存在
__len__(self)
方法时,则直接返回True。