提问人:Simon Van den Bossche 提问时间:8/2/2022 最后编辑:ChrisSimon Van den Bossche 更新时间:8/2/2022 访问量:300
hasattr 调用哪种神奇方法?
Which magic method does hasattr call?
问:
调用哪种魔术方法方法?hasattr
getattr(__o, name)
也可以称为__o.__getattr__(name)
setattr(__o, name)
也可以称为__o.__setattr__(name)
但是等价物是什么?hasattr
我知道关键字的相关魔术方法是 .in
__contains__
答:
5赞
Barmar
8/2/2022
#1
没有特定的 dunder 方法。它基本上等同于:hasattr()
def hasattr(object, name):
try:
getattr(object, name)
return True
except AttributeError:
return False
因此,它依赖于 使用的相同 dunder 方法。getattr()
3赞
Mad Physicist
8/2/2022
#2
hasattr
的文档特别指出
这是通过调用并查看它是否引发
AttributeError
来实现的。getattr(object, name)
这意味着__getattr__
和__getattribute__
是你最关心的问题。
评论
!!getattr(name)
getattr()
__getattr__
getattr
__getattribute__
__getattr__
getattr
.__getattr__
setattr