Python函数重写,对象转字符串函数重写,数值转换函数的重写,内建函数的重写,布尔测试函数的重写

Python函数重写,对象转字符串函数重写,数值转换函数的重写,内建函数的重写,布尔测试函数的重写

函数重写 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


最后编辑于:2019/09/25作者: 牛逼PHP

发表评论