首页 文章

为什么“他们”选择提出例外?

提问于
浏览
2

我正在读关于hasattr built-in function

参数是一个对象和一个字符串 . 如果字符串是对象属性之一的名称,则结果为True,否则返回False . (这是通过调用getattr(object,name)并查看它是否引发AttributeError来实现的 . )

强调我的 .

我没有得到检查 getattr 函数是否会引发 AttributeError 的问题,因为搜索属性本身会明显加快(如果引发异常) .

当我使用标准库时,我希望它以最好的方式编写 . 在这种情况下,提出异常真的是实现 hasattr 的最好方法吗?

2 回答

  • 1

    您无法始终搜索该属性;如果对象实现动态getattr hook,或者覆盖getattribute .

    验证属性的唯一可靠方法是使用 getattr() .

  • 0

    该类可以覆盖 __getattr__()__getattribute__() 以显示 __dict__ 中不存在的属性 .

    为了与 getattr() 保持一致, hasattr() 需要了解这些属性 . 实现这一目标的一种简单但通用的方法是调用 getattr() 并查看是否成功 .

相关问题