В общем случае, анти-паттерн представляет собой подход к разработке решения часто встречающихся задач, который в общем решает эти задачи, но с возможными побочными эффектами.
Getter и setter в Java часто применяют для определения get/set функций для доступа к членам класса. Например, этот шаблон применяется в приложениях, использующих Java Hibernate Framework.
В Python наоборот, такое использование функций приводит к дополнительныму коду без реальной выгоды.
Пример анти-паттерна: реализация класса Python в Java-стиле.
То, что хорошо для Java, не всегда так же хорошо для Python. Так что если ваш «первый язык» Java , вы должны думать, принимая во внимание особенности Python.
Подход 1: Как это делается в Python.
В Python обычной практикой является получить доступ или манипулировать экземпляром класса напрямую. И, как правило, недостаточно использовать защищенные или приватные классы. Экземпляры класса в Python публичны по умолчанию, до тех пор, пока не используется префикс _ или __. Python закрывает имена переменных при помощи _ или __ префиксов, чтобы скрыть их от кода вне класса.
Вот код Python после удаления get/set.
Подход-2: С помощью встроенного декоратора property
В некоторых ситуациях, когда нужно обязательно скрыть экземпляры, можно использовать декораторы свойств для получения функциональности get/set
Вот измененный код с декоратором.