tg-me.com/pyproglib/6506
Last Update:
Команда дня: сравнение объектов с помощью __eq__
В Python, когда вы используете оператор ==
для сравнения объектов, по умолчанию проверяется, ссылаются ли объекты на один и тот же экземпляр в памяти. Однако, если вы хотите настроить, как должны сравниваться объекты вашего класса, вам нужно переопределить метод ‘__eq__’.
❌ Поведение по умолчанию:
Без переопределения ‘__eq__’, Python сравнивает объекты на основе их ссылок в памяти. То есть, два объекта будут считаться равными только в том случае, если они являются одним и тем же объектом.
Пример:
class MyClass:
def __init__(self, value):
self.value = value
a, b = MyClass(1), MyClass(1)
print(a == b) # False
Здесь, несмотря на то, что у объектов
a
и b
одинаковые значения атрибутов, они считаются неравными, так как это разные экземпляры класса.✅ С методом ‘__eq__’ (пользовательское сравнение):
Чтобы изменить поведение сравнения объектов, вы можете переопределить метод ‘__eq__’ в вашем классе. Этот метод будет определять, что именно считать равенством для объектов вашего класса.
Пример:
class MyClass:
def __init__(self, value):
self.value = value
def __eq__(self, other):
if isinstance(other, MyClass):
return self.value == other.value
return False
a, b = MyClass(1), MyClass(1)
print(a == b) # True
В этом примере мы определяем, что объекты считаются равными, если их атрибуты
value
одинаковы. Теперь вывод будет True
, так как у a
и b
одинаковые значения.Библиотека питониста #буст
BY Библиотека питониста | Python, Django, Flask
Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283
Share with your friend now:
tg-me.com/pyproglib/6506