使用 Python,我们可以通过以下两种方法之一设置实例的属性:
>>> class Foo(object):
pass
>>> a = Foo()
>>> a.x = 1
>>> a.x
1
>>> setattr(a, 'b', 2)
>>> a.b
2
您也可以通过属性装饰器来分配属性。
>>> class Bar(object):
@property
def x(self):
return 0
>>> a = Bar()
>>> a.x
0
我的问题是,如何给一个实例分配属性?
我的直觉是尝试这样做...
>>> class Doo(object):
pass
>>> a = Doo()
>>> def k():
return 0
>>> a.m = property(k)
>>> a.m
<property object at 0x0380F540>
...但是,我得到了这个奇怪的属性对象。类似的实验得出了类似的结果。我猜这些属性在某些方面更接近于类而不是实例,但是我不知道内部运作得足够好,无法理解这里发生了什么。