Что такое геттер в ООП и как он реализуется в Python

Ответ

Геттер (getter) — это метод в объектно-ориентированном программировании, который предоставляет контролируемый доступ для чтения значения приватного или защищенного атрибута класса.

Основная цель — инкапсуляция: сокрытие внутренней реализации данных и предоставление публичного интерфейса для работы с ними. Это позволяет добавлять логику (например, валидацию или форматирование) при доступе к значению, не изменяя код, который использует этот объект.

В Python для создания геттеров используется декоратор @property. Он позволяет обращаться к методу как к обычному атрибуту, без вызова ().

Пример:

class Account:
    def __init__(self, initial_balance):
        # _balance — защищенный атрибут
        self._balance = initial_balance

    @property
    def balance(self):
        # Логика геттера: можно добавить форматирование или проверку прав доступа
        return f"{self._balance} USD"

# Использование
acc = Account(100)
print(acc.balance)  # Доступ как к атрибуту, а не методу acc.balance()
# Вывод: 100 USD

Использование @property вместо прямого доступа к атрибутам позволяет в будущем изменять логику получения данных, не нарушая обратную совместимость.