返回

python——如何让一个类在“__getattr__”实现中很好地使用“hasattr ”?

发布时间:2022-04-08 14:52:56 400
# python

我有课,在哪里__getattr__实现方式很简单,如下所示:

    def __getattr__(self, item): return self.__dict__[item]

我看到的问题是许多Python库(例如。numpypandas正在尝试嗅探我的对象是否有__array__使用这个语句

hasattr(obj, '__array__`)

但我的目标是向他们抛出一个错误,说不存在这样的属性。

我的困境是:我如何才能让我的班级与我的学生相处融洽hasattr(返回False)而不是抛出错误,同时,如果任何人想要一个不存在的属性,则抛出错误(即,我仍然希望在任何其他情况下抛出该错误)。

编辑:按要求复制代码:

class A:
    def __getattr__(self, item): return self.__dict__[item]
a = A()
hasattr(a, "lol")

回溯:

  File "", line 4, in 
    hasattr(a, "lol")
  File "", line 2, in __getattr__
    def __getattr__(self, item): return self.__dict__[item]
KeyError: 'lol'
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
下一篇
node.js-duscird.js获取相关用户的名称 2022-04-07 17:51:58