先來看一段代碼python
class Foo(): """docstring for Foo""" def __init__(self, name): self.name = name f = Foo("xiaohong") print(f) l = list("hello") print(l)
執行結果爲:函數
<__main__.Foo object at 0x0000023F0A05B400> ['h', 'e', 'l', 'l', 'o']
python中一切皆對象,f是Foo類的實例,l是List類的實例,可是print出來的東西卻徹底不同,緣由就是print函數觸發的是產生實例的類的str方法,若該類沒有str方法就找repr方法,若repr方法也沒有就會返回像第一行這樣的東西,咱們都知道str調用的是類的__str__()方法,repr調用的是類的__repr__()方法,因此咱們知道應該怎麼修改Foo類了,那就加一個__str__()吧,spa
class Foo(): """docstring for Foo""" def __init__(self, name): self.name = name def __str__(self): return self.name f = Foo("xiaohong") print(f)
執行結果爲:code
xiaohong
總結一下,想要print你的類,就添加__str__()方法或者__repr__()方法,須要注意的是無論是__str__()仍是__repr__(),它們的返回值必須是字符串類型,否則會報以下的錯誤:對象
TypeError: __str__ returned non-string (type int)