的Python爲我們提供了許多可能性的實例/類的屬性,例如:什麼是python屬性get和set命令?
class A(object):
def __init__(self):
self.foo = "hello"
a = A()
有很多種方法訪問/修改的self.foo
值:
- 直接訪問
a.foo
- 內字典
a.__dict__['foo']
- 得到和設置
a.__get__
和a.__set__
,當然有兩個是預定義的方法。 - 的getAttribute
a.__getattribute__
__getattr__
和__setattr__
- 也許更多。
在閱讀源代碼時,我總是迷失其最終的訪問順序?當我使用a.foo
時,如何知道實際調用哪個方法/屬性?
1.'foo'是*實例屬性*,不是類屬性。 2.由於它不是'@屬性'(或其他描述符),'__get__'和'__set__'不會涉及。 – jonrsharpe
例如'__getattr__'與'__getattribute__',請參閱http://stackoverflow.com/q/3278077/3001761 – jonrsharpe