Иррациональное использование антипаттернов в коде. Java-стиль

В общем случае, анти-паттерн представляет собой подход к разработке решения часто встречающихся задач, который в общем решает эти задачи, но с возможными побочными эффектами.

Getter и setter в Java часто применяют для определения get/set функций для доступа к членам класса. Например, этот шаблон применяется в приложениях, использующих Java Hibernate Framework.
В Python наоборот, такое использование функций приводит к дополнительныму коду без реальной выгоды.

Пример анти-паттерна: реализация класса Python в Java-стиле.

То, что хорошо для Java, не всегда так же хорошо для Python. Так что если ваш «первый язык» Java , вы должны думать, принимая во внимание особенности Python.
Java-стиль в Python

Подход 1: Как это делается в Python.

В Python обычной практикой является получить доступ или манипулировать экземпляром класса напрямую. И, как правило, недостаточно использовать защищенные или приватные классы. Экземпляры класса в Python публичны по умолчанию, до тех пор, пока не используется префикс _ или __. Python закрывает имена переменных при помощи _ или __ префиксов, чтобы скрыть их от кода вне класса.

Вот код Python после удаления get/set.
Java-стиль в Python. Исправляем

Подход-2: С помощью встроенного декоратора property

В некоторых ситуациях, когда нужно обязательно скрыть экземпляры, можно использовать декораторы свойств для получения функциональности get/set
Вот измененный код с декоратором.
Java-стиль в Python. Исправляем

Поделитесь с друзьями:

Оставьте комментарий