📚 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
Кіру пікір қалдыру үшін