📚 SDE Best Practices: поведение vs реализация

На курсе промышленной разработки на Python задают много крутых вопросов. Продолжаю делиться ответами на некоторые из них.

❓Вопрос: должен ли класс реализовывать метод __eq__?

Рекомендую взять в практику тезис:

следует тестировать поведение, а не реализацию

Рассмотрим реализацию класса Point с атрибутами x и y:

class Point:

    def __init__(self, x, y):

        self.x = x

        self.y = y

Создадим объекты класса a и b:

a = Point(x=1, y=2)

b = Point(x=1, y=2)

Вопрос: как вы будете проверять, что объекты равны?

Логичный ответ:

a == b

// это была проверка поведения

Вы не будете проверять:

a.x == b.x and a.y == b.y

// это была бы проверка реализации

Тесты вашего приложения должны быть наполнены проверкой поведения, а не реализации. В этом случае код будет гораздо легче поддерживать и обновлять.

Вернемся к оригинальному вопросу: если не реализовать метод __eq__, то будут объекты a и b будут неравны. Почему? Какое поведение __eq__ по умолчанию?

#work #study

Комментарии 0

Авторизуйтесь чтобы оставить комментарий