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,會報錯