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_name和
self.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'