使用旧样式类只需使用hasattr
即可:
>>> class old:
... pass
...
>>> hasattr(old, '__eq__')
False
使用新样式类,每个类都具有属性__eq__
:
>>> class nsc(object):
... pass
...
>>> hasattr(nsc, '__eq__')
True
这是预期的行为,因为hasattr(object, '__eq__')
也会返回True
。每种丰富的比较方法都是如此。
如果我不能使用hasattr
,如何验证类是否实现了丰富的比较方法?想到的一件事是调用方法并查看它是否引发NotImplemented
异常。但是调用这些方法可能会有意想不到的损失。
答案 0 :(得分:1)
您可以使用pr
代替dir
来完成此操作。丰富的比较方法不会出现在hasattr
函数返回的列表中。
dir