>>-6ren">
gpt4 book ai didi

python - 为什么不能在类的实例上设置属性?

转载 作者:太空宇宙 更新时间:2023-11-04 05:34:07 24 4
gpt4 key购买 nike

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

当我尝试在类的实例上设置属性时发生了什么?

最佳答案

您不能在实例上设置属性,因为您不能。好吧,你可以,但正如你所发现的那样,这是行不通的。属性只有在类上设置时才有效;这就是它的设计方式。有关底层功能(描述符)如何工作的详细信息,请参阅 Descriptor HowTo .

关于python - 为什么不能在类的实例上设置属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36167395/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com