1 class Foo: 2 num = 3 3 4 def __init__(self, name, age): 5 self.name = name 6 self.age = age 7 8 def __str__(self): # 自己定制打印信息 9 return '新的自定制显示的方法名字是%s 年龄是%s' % (self.name, self.age) 10 11 def __repr__(self): # 如果找不到str方法,就会去找__repr__方法 12 return '这是定制的' # 该方法也可以在解释器里面显示 13 14 15 f1 = Foo('小白', 28) 16 print(f1) # 触发str(f1)----->f1.__str__() 相当于以前的len()是执行的__len__()方法 17 a = str(f1) # 验证print(f1) 就是执行str(f1) 18 print(a) 19 b = f1.__str__() # 验证print(f1) 就是执行str(f1) 20 print(b) 21 print(f1) 22 输出: 23 新的自定制显示的方法名字是小白 年龄是28 24 新的自定制显示的方法名字是小白 年龄是28 25 新的自定制显示的方法名字是小白 年龄是28 26 新的自定制显示的方法名字是小白 年龄是28 27 新的自定制显示的方法名字是小白 年龄是28 28 新的自定制显示的方法名字是小白 年龄是28
如果__str__ 没有被定义,就会找到__repr__ retrun必须返回字符串,否则会抛出异常