如何验证类是否实现了丰富的比较方法?

时间:2015-10-17 19:54:49

标签: python new-style-class

使用旧样式类只需使用hasattr即可:

>>> class old:
...     pass
...
>>> hasattr(old, '__eq__')
False

使用新样式类,每个类都具有属性__eq__

>>> class nsc(object):
...     pass
...
>>> hasattr(nsc, '__eq__')
True

这是预期的行为,因为hasattr(object, '__eq__')也会返回True。每种丰富的比较方法都是如此。

如果我不能使用hasattr,如何验证类是否实现了丰富的比较方法?想到的一件事是调用方法并查看它是否引发NotImplemented异常。但是调用这些方法可能会有意想不到的损失。

1 个答案:

答案 0 :(得分:1)

您可以使用pr代替dir来完成此操作。丰富的比较方法不会出现在hasattr函数返回的列表中。

dir