str与repr 改变对象的字符串显示

 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必须返回字符串,否则会抛出异常

posted @ 2020-03-08 20:23  竹石2020  阅读(123)  评论(0编辑  收藏  举报