1. 程式人生 > >【Python045-魔法方法:屬性訪問】

【Python045-魔法方法:屬性訪問】

一、屬性的幾種訪問方式

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.x
10 >>> 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)

定義當一個屬性被刪除時的行為