Например,
, у меня есть этот класс и два его экземпляра:
class A:
def __init__(self, version):
self.version = version
a1 = A('1.0')
a2 = A('1.0')
, потому что нет прямого способа сравнить a1
и a2
.Я переопределяю метод __eq__
обоих экземпляров, используя MethodType.
def compare(self, other):
if not isinstance(other, self.__class__):
raise TypeError
return self.version == other.version
a1.__eq__ = MethodType(compare, a1, a1.__class__)
a2.__eq__ = MethodType(compare, a2, a2.__class__)
Однако после всех этих усилий a1 == a2
по-прежнему возвращает False
.
После некоторых исследований , я понимаю, что для переопределения ==
необходимо переопределить метод __eq__
для класса, а не для экземпляра.
Одна из причин, почему я неЭто делается на уровне класса, так как это загрязняет класс, я создаю экземпляры только с использованием некоторых функций (не подклассов) и динамически добавляю атрибуты для сравнения.
Я хочу знать, есть лиспособ переопределить ==
на уровне экземпляра без изменения класса.