我正在阅读有关hasattr built-in function的信息:


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


强调我的。

我没有检查getattr函数是否引发AttributeError的意义,因为搜索属性本身(如果引发异常)会大大加快搜索速度。

当我使用标准库时,我希望它是以最佳方式编写的。在这种情况下,引发异常确实是实现hasattr的最佳方法吗?

最佳答案

您不能总是搜索该属性。例如,如果对象实现动态__getattr__ hook或覆盖__getattribute__

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

关于python - 为什么“他们”选择提出异常(exception)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25910147/

10-12 16:31