为什么hasattr()在下面返回布尔值True? “酒吧”属性 没有在代码中的任何地方设置。谢谢
class AttrClass(object):
def __getattr__(self, name):
pass
data = AttrClass()
print('Current __dict__: ', data.__dict__)
print('Does bar exists?: ', hasattr(data, 'bar'))
输出:
Current __dict__: {}
Does bar exists?: True
答案 0 :(得分:1)
通过重写__getattr__
方法并使其始终返回None
(由于没有显式返回值的函数将隐式返回None
),AttrClass
的实例将现在,对于传递给True
函数的任何给定名称,返回hasattr
仅仅是因为被覆盖的__getattr__
方法不会引发AttributeError
异常,而hasattr
仅返回false当它调用AttributeErro
方法时得到__getattr__
异常时。
有关详细信息,请参阅documentation。