为什么hasattr()在下面返回布尔True?‘'bar’属性在代码中的任何位置都没有设置。谢谢
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发布于 2019-02-03 08:02:33
通过重写__getattr__方法并使其始终返回None (因为没有显式返回值的函数将隐式返回None ),AttrClass实例现在将返回传递给hasattr函数的任何给定名称的True,仅仅因为被覆盖的__getattr__方法不会引发AttributeError异常,而hasattr只在调用__getattr__方法时才返回false。
详情请参阅文档。
https://stackoverflow.com/questions/54500955
复制相似问题