hasattr调用了哪个魔术方法



hasattr调用哪个魔术方法?

getattr(__o, name)也称为__o.__getattr__(name)

setattr(__o, name)也称为__o.__setattr__(name)

hasattr的等价物是什么?

我知道in关键字的相关魔术方法是__contains__

hasattr()没有特定的dunder方法。它本质上等同于:

def hasattr(object, name):
try:
getattr(object, name)
return True
except AttributeError:
return False

因此,它依赖于getattr()使用的相同dunder方法。

hasattr的文档特别指出

这是通过调用getattr(object, name)并查看它是否引发AttributeError来实现的。

这意味着__getattr____getattribute__是您最关心的Dunder。

最新更新