Вопрос №25
Осталось:
Что такое инкапсуляция в Python?
Образцовый ответ
Показывать ответ по умолчанию
Инкапсуляция — это принцип ООП, при котором внутренние данные объекта скрываются от прямого доступа извне.
Конвенции именования:
В Python нет строгих модификаторов доступа (private, public). Вместо этого используются конвенции:
- name — публичный атрибут, доступен всем.
- _name — «защищённый» (по конвенции), предназначен для внутреннего использования.
- __name — «приватный», Python применяет name mangling (изменение имени).
class BankAccount: def __init__(self, balance): self.__balance = balance # «Приватный» атрибут def get_balance(self): return self.__balance account = BankAccount(1000) # print(account.__balance) # AttributeError print(account.get_balance()) # 1000 # Name mangling — атрибут доступен через изменённое имя print(account._BankAccount__balance) # 1000
@property — управляемый доступ:
Позволяет использовать методы как атрибуты:
class Temperature: def __init__(self, celsius): self._celsius = celsius @property def celsius(self): return self._celsius @celsius.setter def celsius(self, value): if value < -273.15: raise ValueError("Ниже абсолютного нуля!") self._celsius = value @property def fahrenheit(self): return self._celsius * 9 / 5 + 32 temp = Temperature(25) print(temp.celsius) # 25 print(temp.fahrenheit) # 77.0 temp.celsius = 30 # Использует setter
