0

使用旧样式类只需使用hasattr作品:

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

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

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

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

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

4

1 回答 1

1

您可以通过使用dir而不是hasattr. 丰富的比较方法不会出现在dir函数返回的列表中。

>>> class nsc(object):
...     pass
...
>>> '__eq__' in dir(nsc)
False
于 2015-10-17T20:33:42.507 回答