class A(object):
def __init__(self, a, b):
self._a = a
self._b = b
def __eq__(self, other):
print("a eq")
return (self._a, self._b) == (other._a, other._b)
class B(A):
def __eq__(self, other):
print("b eq")
return isinstance(other, B) and super(B, self).__eq__(other)
a = A(1, 2)
b = B(1, 2)
print(a == b)
print(b == a)
Y2xhc3MgQShvYmplY3QpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGEsIGIpOgogICAgICAgIHNlbGYuX2EgPSBhCiAgICAgICAgc2VsZi5fYiA9IGIKCiAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgIAlwcmludCgiYSBlcSIpCiAgICAgICAgcmV0dXJuIChzZWxmLl9hLCBzZWxmLl9iKSA9PSAob3RoZXIuX2EsIG90aGVyLl9iKQogICAgICAgIApjbGFzcyBCKEEpOgogICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAJcHJpbnQoImIgZXEiKQogICAgICAgIHJldHVybiBpc2luc3RhbmNlKG90aGVyLCBCKSBhbmQgc3VwZXIoQiwgc2VsZikuX19lcV9fKG90aGVyKQogICAgICAgIAphID0gQSgxLCAyKQpiID0gQigxLCAyKQpwcmludChhID09IGIpCnByaW50KGIgPT0gYSkK