如果要把一個類的實例變成 str,就需要實現特殊方法str():
class Person(object):
def __init__(self, name, gender):
self.name = name
self.gender = gender
def __str__(self):
return '(Person: %s, %s)' % (self.name, self.gender)
現在,在交互式命令行下用 print 試試:
>>> p = Person('Bob', 'male')
>>> print p
(Person: Bob, male)
但是,如果直接敲變量 p:
>>> p
<main.Person object at 0x10c941890>
似乎str() 不會被調用。
因為 Python 定義了str()和repr()兩種方法,str()用于顯示給用戶,而repr()用于顯示給開發人員。
有一個偷懶的定義repr的方法:
class Person(object):
def __init__(self, name, gender):
self.name = name
self.gender = gender
def __str__(self):
return '(Person: %s, %s)' % (self.name, self.gender)
__repr__ = __str__