2
SETATTR可以在一个类或类的实例中使用:为什么你不能在一个类的实例上设置一个属性?
>>> class C(object):
... pass
...
>>> myc = C()
>>> setattr(myc, "val1", 1)
>>> setattr(myc, "val2", 2)
>>> myc.val1
1
>>> myc.val2
2
>>>
然而,当我尝试设置属性,我得到意想不到的事情:
>>> setattr(myc, "val3", property(lambda self: 3))
>>> myc.val3
<property object at 0x7f4d2f30c418>
我得到的行为我预计当我的属性设置为类而不是实例:
>>> setattr(C, "val4", property(lambda self: 4))
>>> myc.val4
4
当我尝试在一个类的实例设置属性发生了什么事?