Я попытался реализовать некоторый подстановочный класс, который сравнивается равным любой строке, но ложен с чем-либо еще.Однако оператор !=
не вызывает моего участника __neq__
, как ожидалось:
class A(str):
def __cmp__(self, o):
return 0 if isinstance(o, str) else -1
def __eq__(self, o):
return self.__cmp__(o) == 0
def __neq__(self, o):
return self.__cmp__(o) != 0
a = A()
b = 'a'
print(a == b) # Prints True, as expected
print(a != b) # Prints True, should print False
Что я делаю не так?