學習筆記——Python的特殊方法

一、簡介:

1、python能夠將任意變量變成str是因爲任何數據類型的實例都有一個特殊方法:__str__()
2、python的特殊方法:
(1).特殊方法定義在class中
(2).不需要直接調用
(3).python的某些函數或操作符會自動調用對應的特殊方法。
3.正確實現特殊方法:
(1).只需編寫用到的特殊方法
(2).有關聯性的特殊方法都必須實現 如:
__getattr__
__setattr__
__delattr__
這三個方法需要同時編寫。

下面列舉了部分Python定義的特殊方法:

二、python中 __str__和__repr__

如果要把一個類的實例變成 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__




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章