python——如何让一个类在“__getattr__”实现中很好地使用“hasattr ”?
发布时间:2022-04-08 14:52:56 400
相关标签: # python
我有课,在哪里__getattr__
实现方式很简单,如下所示:
def __getattr__(self, item): return self.__dict__[item]
我看到的问题是许多Python库(例如。numpy
和pandas
正在尝试嗅探我的对象是否有__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'
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报