gpt4 book ai didi

python - 为什么python属性装饰器会吃掉这个异常?

转载 作者:太空宇宙 更新时间:2023-11-03 14:17:50 24 4
gpt4 key购买 nike

<分区>

当我运行这段代码时没有打印任何东西。为什么?不抛出任何异常,if...elif...else 结构中的任何内容都不会执行。

环境:Python 2.7。

d= {"x":1}

class bizarre(object):
def __init__(self):
self.metadata = {}

def __getattr__(self, name):
return self.metadata.get(name, None)

@property
def odd(self):
if False:
print '1'
elif self.fake.get("blah", ''):
print '2'
else:
print '3'

b=bizarre()
b.odd

The previous answer BrenBarn 建议有回答我的问题所需的信息,尽管不是直接的。但我现在可以回答我自己的问题了:

属性装饰器使用 AttributeError 作为 getter 调用 __getattr__ 的信号,所以如果你的 getter 抛出一个属性错误,它会被捕获而你不会看到它。

谢谢 lemonhead 和 mission.liao 纵容我的无知。

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