Будет напечатано a does not equal b. Классы не переопределяют сравнение, а a и b — два разных объекта, поэтому равенство не устанавливается.
Сравнение разных объектов без переопределения __eq__
Будет напечатано 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.