3 подписчика
@dataclass сравнение объектов класса (__eq__)

Если мы хотим сравнить два объекта одного класса на равенство, то @dataclass уже поддерживает встроенное сравнение, когда сравниваются все атрибуты объектов.

При использовании стандартных классов (без декоратора @dataclass) операция сравнения объектов была бы недоступна. Ее потребовалось бы специально прописывать через метод __eq__.

Дополнительно в @dataclass можно прописать собственное условия, как сравнивать между собой объекты. Например, можно сравнивать объекты не по всем атрибутам, а только по какому-то одному атрибуту. В этом случае надо прописать данное условие в методе __eq__.

В примере №1 сравниваются два объекта класса, созданного через @dataclass, через логику сравнения по умолчанию (сравниваются между собой все атрибуты объектов и если какие-нибудь атрибуты отличались, то мы получили бы False).

В примере №2 мы прописали метод __eq__ и отразили в нем логику, что объекты сравниваются между собой только на базе атрибута name. Соответственно не учитываются различия по другим атрибутам. И, получается, что несмотря на то, что объекты имеют разные атрибуты region и level, они равны между собой (True).
9 месяцев назад
1,2K подписчиков
Резюме В этой статье вы узнаете об операторах сравнения Python и о том, как их использовать для сравнения двух значений. Введение в операторы сравнения Python В программировании часто требуется сравнить одно значение с другим значением. Для этого используются операторы сравнения. В Python есть шесть операторов сравнения: Эти операторы сравнения сравнивают два значения и возвращают логическое значение True либо False. Вы можете использовать эти операторы для сравнения чисел и строк. Оператор «Меньше...
4 месяца назад