当我尝试覆盖魔术方法__eq__
并使用super
访问中找到的基本方法时object
,我收到错误消息。这不可能是一个错误,但它确实感觉像一个:
class A(object):
def __eq__(self, other):
return super(A, self).__eq__(other)
A() == 0
# raises AttributeError: 'super' object has no attribute '__eq__'
这是不直观的,因为object.__eq__
存在,但不存在class A(object): pass
。如果我没记错__eq__
的话,请使用is
检查,那么这可能是这里的解决方法,但是使用is
而不是对super
mixin 不友好。在我的情况下,走那条路是可以的,但在其他情况下可能不是。
任何建议或有关为什么__eq__
以这种方式工作的信息都会很棒。