【发布时间】:2021-04-25 11:28:26
【问题描述】:
我是使用描述符的新手,我想我对它们的工作原理有很好的理解,但我遇到了一个问题,我不知道如何解决它。
代码
class Foo:
class Bar:
def __get__(self,instance, owner):
return 10
def __set__(self,instance,value):
raise Exception
bar=Bar()
print(Foo.bar)
Foo.bar=5
print(Foo.bar)
输出
>>> 10
>>> 5
我试图将bar 设为常量以进行测试,我知道property 装饰器,但我更喜欢使用描述符。
首先我打印出bar 的值以查看__get__ 是否有效 - 确实有效,输出为10。
但是,当我将5 分配给bar 时,预期的结果将是一个例外,但发生的情况是5 被分配给bar,尽管指定了__set__,所以当我再次打印时,第二个输出是5.
谁能告诉我为什么没有提出错误?
【问题讨论】:
标签: python python-3.x oop descriptor