__getattr__ 特殊方法
__getattr__ special method
为什么下面的 hasattr() return boolean 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
通过覆盖 __getattr__
方法并使其始终 return None
(因为函数没有明确 return 值 returns None
隐式),AttrClass
的实例现在将 return True
对于传递给 hasattr
函数的任何给定名称,仅仅是因为重写的 __getattr__
方法确实不引发 AttributeError
异常,并且 hasattr
在调用 __getattr__
方法时获得 AttributeErro
异常时仅 return 为假。
详情请参考documentation
为什么下面的 hasattr() return boolean 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
通过覆盖 __getattr__
方法并使其始终 return None
(因为函数没有明确 return 值 returns None
隐式),AttrClass
的实例现在将 return True
对于传递给 hasattr
函数的任何给定名称,仅仅是因为重写的 __getattr__
方法确实不引发 AttributeError
异常,并且 hasattr
在调用 __getattr__
方法时获得 AttributeErro
异常时仅 return 为假。
详情请参考documentation