首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >__getattr__特殊方法

__getattr__特殊方法
EN

Stack Overflow用户
提问于 2019-02-03 07:55:42
回答 1查看 24关注 0票数 1

为什么hasattr()在下面返回布尔True?‘'bar’属性在代码中的任何位置都没有设置。谢谢

代码语言:javascript
复制
class AttrClass(object):
    def __getattr__(self, name):
        pass


data = AttrClass()
print('Current __dict__:  ', data.__dict__)
print('Does bar exists?:  ', hasattr(data, 'bar'))

输出:

代码语言:javascript
复制
Current __dict__:   {}
Does bar exists?:   True
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-03 08:02:33

通过重写__getattr__方法并使其始终返回None (因为没有显式返回值的函数将隐式返回None ),AttrClass实例现在将返回传递给hasattr函数的任何给定名称的True,仅仅因为被覆盖的__getattr__方法不会引发AttributeError异常,而hasattr只在调用__getattr__方法时才返回false。

详情请参阅文档

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54500955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档