【发布时间】:2011-10-30 09:07:37
【问题描述】:
使用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>
...但是,我得到了这个奇怪的属性对象。类似的实验产生了类似的结果。我的猜测是,在某些方面,属性与类的关系比与实例的关系更密切,但我不太了解内部工作原理,无法理解这里发生了什么。
【问题讨论】:
标签: python attributes properties instance variable-assignment