发布网友 发布时间:2022-04-27 13:24
共2个回答
懂视网 时间:2022-04-18 06:48
在自定义类内添加相应的方法,让自定义类创建的实例能像内建对象一样进行内建函数操作,这就是函数重写。对象转字符串函数:repr(obj) ,返回一个能代表此对象的表达式字符串,通常eval(repr(obj)) == obj (这个字符串通常是给python解释执行器运行用的),str(obj) 通过给定的对象返回一个字符串(这个字符串通常是给人阅读的)。
对象转字符串函数的重写方法:
repr(obj) 函数的重写方法:
def __repr__(self):
str(obj) 函数的重写方法:
def __str__(self):
说明:
1. str(obj) 函数先查找, obj.__str__()方法,调用此方法并返回结果
2. 如果没有obj.__str__()方法时,则返回obj.__repr__()方法的结果并返回
3. 如果obj.__repr__方法不存在,则调用object类的__repr__实例方法显示<__main__.XXXX object at 0xAABBCCDD>格式的字符串
示例:
# 此示例示意通过重写 repr 和 str方法改变转为字符串的规则 class MyNumber: def __init__(self, value): '构造函数,初始化MyNumber对象' self.data = value def __str__(self): '''转换为普通人识别的字符串''' # print("__str__方法被调用!") return "自定义数字类型对象: %d" % self.data def __repr__(self): '''转换为eval能够识别的字符串''' return 'MyNumber(%d)' % self.data n1 = MyNumber(100) n2 = MyNumber(200) print('repr(n1) ====>', repr(n1)) print('str(n2) ====>', str(n2))
热心网友 时间:2022-04-18 03:56
从父类继承中的方法,如果不满足程序的需求,就需要重写。