Сравнение разных объектов без переопределения __eq__

Будет напечатано a does not equal b. Классы не переопределяют сравнение, а a и b — два разных объекта, поэтому равенство не устанавливается.

Короткий ответ

Что ответить на собеседовании

Будет напечатано a does not equal b. Классы не переопределяют сравнение, а a и b — два разных объекта, поэтому равенство не устанавливается.

Подробный разбор

Ответ с пояснениями

Условие

class A:
    pass

class B:
    pass

if __name__ == "__main__":
    a = A()
    b = B()
    if a == b:
        print("a equals b")
    else:
        print("a does not equal b")

Ответ

Будет напечатано a does not equal b. Классы не переопределяют сравнение, а a и b — два разных объекта, поэтому равенство не устанавливается.

Пустые классы наследуют стандартное поведение object. Отсутствие атрибутов у обоих экземпляров не делает их равными по содержимому. Чтобы задать сравнение по полям, нужно реализовать подходящий eq и продумать поддержку других типов; dataclass может сгенерировать такой метод по своим правилам. Здесь пользовательской логики сравнения нет, поэтому выполняется ветка else.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее