Ответ
В Python для создания getter'а (метода для получения значения) используется декоратор @property. Этот подход позволяет обращаться к методу как к обычному атрибуту, без вызова скобок (), что делает код более чистым и интуитивным.
Основная цель — инкапсулировать внутреннее состояние объекта, предоставляя контролируемый доступ к нему.
Пример:
class Account:
def __init__(self, owner, balance):
self.owner = owner
self._balance = balance # "Защищенный" атрибут
@property
def balance(self):
"""Это getter для атрибута _balance."""
print("Getter called")
return self._balance
# Использование
acc = Account("Alice", 1000)
# Обращаемся как к атрибуту, а не как к методу acc.balance()
current_balance = acc.balance
# Вывод: Getter called
print(current_balance)
# Вывод: 1000
Ключевые моменты:
- Декоратор
@propertyпревращает методbalance(self)в свойствоbalance, доступное только для чтения. - Соглашение об именовании: Внутренний атрибут часто называют с префиксом
_(например,_balance), чтобы показать, что он не предназначен для прямого доступа извне. Публичное свойство (balance) предоставляет к нему доступ. - Чистый интерфейс: Если в будущем логика получения баланса усложнится (например, потребуется пересчет с учетом комиссии), интерфейс для пользователя (
acc.balance) не изменится.