class Foo:
def __init__(self,name,age):
self.name = name
self.age = age
def __str__(self):
return 'my name is %s age is %s'%(self.name,self.age)
f1 = Foo('lele',18)
print(f1)#str(f1)--->f1.__str__()
def __repr__(self):
return 'my name is %s age is %s' % (self.name, self.age)
#return 1#会报错
f1 = Foo('yibole',19)
print(f1)#repr(f1)---->f1.__repr__()
在解释器中如果使用repr输入f1,就会输出my name is yibole age is 19
repr和str都是用来控制输出的
str又用在print时可以使用,repr可以用在解释器中使用
如果两个同时存在,print调用的本质就是去调用str,并不是优先级前后的关系,如果没有str,print就回去寻找str方法,因为找不到,所以去运行了repr方法
str和retr不能return非字符串类型的内容,例如上例中的return 1,会报错