第九章:魔法方法 9.5 屬性
python裏面沒有私有變量的設定, 儘管可以在變量名前面加上 _ 來提醒,警告不要修改變量, 但其實還是可以強行修改.
類似其他語言,你可以定義一些 getX , setX 之類的函數來訪問,修改變量.
但python裏面提供了一個叫 "property函數" 的東西,這玩意兒可以讓 直接訪問,修改變量 與你自己定製的 get,set函數 映射起來.
具體的例子如下.
假設有這麼段代碼(請自行忽略其中的內容,僅注意語法):
__metaclass__ = type
class Man :
def __init__ ( self , size=15 ) :
self.size = size
def getSize ( self ) :
print 'Get Size!'
return self.size
def setSize ( self , size ) :
print 'Set Size!'
self.size = size
# property函數的使用. (實際上它的實現不是函數,而是一個擁有很多方法的類 )
size = property ( getSize , setSize )
然後你可以試着訪問,修改變量.
>> diaosi = Man()
>> diaosi.size
Get Size!
>> print diaosi.size
Get Size!
15
>> diaosi.size = 14
Set Size!
>> print diaosi.size
Get Size!
14
>> .......
簡化了客戶代碼. 且可以支持coder對屬性訪問,修改,刪除等的設定.
還有什麼其他好處呢?暫時沒想明白.