如果要把一個類的實例變成str
,就需要實現特殊方法__str__()和__repr__()(可選項).
Python 中定義了__str__()
和__repr__()
兩種方法,__str__()
用於顯示給用戶,而__repr__()
用於顯示給開發人員。具體區別見代碼:
class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return '(Person: %s, %d)' % (self.name, self.age)
if __name__ == '__main__':
p = Person('li', 22)
print(p)
此時在python交互命令行下測試:
>>> from package_name import *
>>> p = Person('li', 22)
>>> p
<teststr.Person object at 0x7f443ce4dfd0>
>>> print(p)
(Person: li, 22)
可以看出直接敲p是不能像print(p)那樣顯示的,如果要實現這種調試效果,就需要在Person類中實現__repr__方法,一種簡單的方式如下代碼:
class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return '(Person: %s, %d)' % (self.name, self.age)
__repr__ = __str__
if __name__ == '__main__':
p = Person('li', 22)
print(p)