函数重写 override
重写是在自定义的类内添加相应的方法,让自定义的类生成的对象(实例)像内建对象一样进行内建的函数操作
如:
class MyNumber:
def __len__(self):
return 100
n1 = MyNumber()
print(len(n1)) #此时输出100
对象转字符串函数重写
repr(obj):返回一个能代表此对象的表达式字符串,通常:eval(repr(obj)) == obj
str(obj):通过给定的对象返回一个字符串(这个字符串通常是给人看的)
对象转字符串函数重写方法:
repr() 函数的重写方法:
def __repr__(self):
return 能够表达self内容的字符串
str() 函数的重写方法:
def __str__(self):
return 人能看懂的字符串
说明:
1.str(obj) 函数优先调用 obj.__str__()方法返回字符串
2.如果obj 没有__str__()方法,则调用obj.__repr__()方法返回的字符串
3.如果obj没有__repr__()方法,则调用object类的__repr__(),实例方法显示<xxxx>格式的字符串
数值转换函数的重写
def __complex__(self) complex(obj) 函数调用
def __int__(self) int(obj) 函数调用
def __float__(self) float(obj) 函数调用
def __bool__(self) bool(obj) 函数调用
内建函数的重写
__abs__ abs(obj)
__len__ len(obj)
__reversed__ reversed(obj)
__round__ round(obj)
布尔测试函数的重写
格式 def __bool__(self):
...
作用:
用于bool(obj) 函数取值
用于if语句真值表达式中
用于while语句真值表达式中
说明:
1.优先调用__bool__方法取值
2.如果不存在__bool__方法,则用__len__()方法取值后判断是否为零,如果不为零返回True,否则返回False
3.如果再没有__len__方法,则直接返回True
发表评论