Python進階之“屬性(property)”詳解

Python中有一個被稱爲屬性函數(property)的小概念,它可以:

  • 將類方法轉換爲只讀屬性

class Person(object):
    """"""
 
    #----------------------------------------------------------------------
    def __init__(self, first_name, last_name):
        """Constructor"""
        self.first_name = first_name
        self.last_name = last_name
 
    #----------------------------------------------------------------------
    @property
    def full_name(self):
        """
        Return the full name
        """
        return "%s %s" % (self.first_name, self.last_name)
在上面的代碼中,我們創建了兩個類屬性:self.first_nameself.last_name。接下來,我們創建了一個full_name方法,它有一個@property裝飾器。這使我們能夠在Python解釋器會話中有如下的交互:

>>> person = Person("Mike", "Driscoll")
>>> person.full_name
'Mike Driscoll'
>>> person.first_name
'Mike'
>>> person.full_name = "Jackalope"
Traceback (most recent call last):
  File "<string>", line 1, in <fragment>
AttributeError: can't set attribute

正如你所看到的,因爲我們將方法變成了屬性,我們可以使用正常的點符號訪問它。但是,如果我們試圖將該屬性設爲其他值,我們會引發一個AttributeError錯誤。改變full_name屬性的唯一方法是間接這樣做:

>>> person.first_name = "Dan"
>>> person.full_name
'Dan Driscoll'



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