python中的__str__和__repr__

如果要把一個類的實例變成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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章