【Python045-魔法方法:屬性訪問】
阿新 • • 發佈:2018-11-05
一、屬性的幾種訪問方式
1、類.屬性名
>>> class C: def __init__(self): self.x = 'X-man' >>> c = C() >>> c.x 'X-man'
2、用內建函式getattr()訪問屬性
>>> getattr(c,'x','莫有這個屬性') 'X-man' >>> getattr(c,'y','莫有這個屬性') '莫有這個屬性' >>>
3、用property方法訪問屬性
class C: def __init__(self,size=10): self.size=size def getsize(self): return self.size def setsize(self,value): self.size = value def delsize(self): del self.size x=property(getsize,setsize,delsize) 執行結果: >>> c = C() >>> c.x10 >>> c.x=1 >>> c <__main__.C object at 0x10c012f60> >>> c.x 1 >>> del c.x >>> c.x Traceback (most recent call last): File "<pyshell#19>", line 1, in <module> c.x File "/Users/wufq/Desktop/property.py", line 6, in getsize return self.size AttributeError:'C' object has no attribute 'size'
4、各類內建函式訪問屬性
* __getattr__(self,name)
定義當用戶試圖獲取一個不存在的屬性時的行為
* __getattribute__(self,name)
定義當該類的屬性被訪問時的行為
* __setattr__(self,name,value)
定義當一個屬性被設定時的行為
* __delattr__(self,name)
定義當一個屬性被刪除時的行為