的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