我已经成功地使用了 Python 属性,但是我不知道它们是如何工作的。如果我在类之外解引用一个属性,我只会得到一个类型为 property
的对象:
@property
def hello(): return "Hello, world!"
hello # <property object at 0x9870a8>
但是如果我把一个属性放到一个类中,它的行为是非常不同的:
class Foo(object):
@property
def hello(self): return "Hello, world!"
Foo().hello # 'Hello, world!'
我已经注意到未绑定的 Foo.hello
仍然是 property
对象,所以类实例化必须做魔术,但是那是什么魔术?