標籤:物件導向 __str__ 常見 解決辦法 print fun 字串 object 直接
Python的class允許定義許多定製方法,可以讓我們非常方便地產生特定的類。以下是集中常見的定製方法:
怎麼才能列印得好看呢?只需要定義好__str__()方法,返回一個好看的字串就可以了:
__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)
這樣列印出來的執行個體,不但好看,而且容易看出執行個體內部重要的資料。
但是細心的朋友會發現直接敲變數不用print,列印出來的執行個體還是不好看:
>>> s = Student(‘Michael‘)>>> s<__main__.Student object at 0x109afb310>
這是因為直接顯示變數調用的不是__str__(),而是__repr__(),兩者的區別是__str__()返回使用者看到的字串,而__repr__()返回程式開發人員看到的字串,也就是說,__repr__()是為調試服務的。
解決辦法是再定義一個__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__
Python實用筆記 (26)物件導向進階編程——定製類