當打印一個類的實例時,返回的字符串是對象的地址信息,如<__main__.Student object at 0x109afb310>,很很差看
可經過在類內定義__str__(),這樣打印實例時就會返回一個好看的字符串,並且容易看出實例內部重要的數據spa
定義__str__()調試
class Student(object): def __init__(self, name): self.name = name def __str__(self): return 'Student object (name: %s)' % self.name print(Student('Michael')) #輸出:Student object (name: Michael)
定義__repr__()code
s = Student('Michael') s #輸出:<__main__.Student object at 0x109afb310>,打印出來的實例仍是很差看
由於直接顯示實例變量時,它調用的不是__str__(),而是__repr__()
__str__()和__repr__()區別
__str__():返回用戶看到的字符串
__repr__():返回程序開發者看到的字符串,即__repr__()是爲調試服務的
解決辦法是再定義一個__repr__(),可是一般__str__()和__repr__()代碼都是同樣的
因此,有個偷懶的寫法,就是直接將__str__ 賦給__repr__對象
class Student(object): def __init__(self, name): self.name = name def __str__(self): return 'Student object (name=%s)' % self.name __repr__ = __str__ s = Student('Michael') s #輸出:Student object (name: Michael)