使用旧样式类只需使用hasattr作品:
>>> class old:
... pass
...
>>> hasattr(old, '__eq__')
False
使用新样式类,每个类都具有以下属性__eq__:
>>> class nsc(object):
... pass
...
>>> hasattr(nsc, '__eq__')
True
这hasattr(object, '__eq__')也是返回的预期行为True。对于每种丰富的比较方法都是如此。
如果我不能使用,如何验证类是否实现了丰富的比较方法hasattr?想到的一件事是调用该方法并查看它是否引发NotImplemented异常。但是调用这些方法可能会产生意想不到的损害。