ООП в Python #3
В нашем втором уроке по основам ООП на Python мы рассмотрим важнейшую концепцию – инкапсуляцию и управление доступом к данным!
🔸Что такое инкапсуляция? Инкапсуляция – это механизм объединения данных и методов, которые работают с этими данными, внутри одного класса. Это помогает скрыть внутреннюю реализацию объекта и защищает данные от некорректного использования.
🔸Управление доступом к данным. В Python доступ к данным можно регулировать с помощью модификаторов доступа. Существует три уровня доступа:
🔹Публичный (public) – атрибуты и методы доступны из любого места. 🔹Защищенный (protected) – атрибуты и методы доступны только внутри класса и его подклассов. 🔹Приватный (private) – атрибуты и методы доступны только внутри класса.
🔹Пример реализации Рассмотрим пример класса BankAccount:
class BankAccount:
def __init__(self, owner, balance):
self.owner = owner # Публичный атрибут
self._balance = balance # Защищенный атрибут
def deposit(self, amount):
if amount > 0:
self._balance += amount # Доступ к защищенному атрибуту
else:
print("Invalid deposit amount")
def withdraw(self, amount):
if 0 < amount <= self._balance:
self._balance -= amount # Доступ к защищенному атрибуту
else:
print("Invalid withdraw amount")
def get_balance(self):
return self._balance # Публичный метод для доступа к защищенному атрибуту
🔹Приватные атрибуты и методы Для создания приватных атрибутов и методов используется двойное подчеркивание __:
class SecretAccount:
def __init__(self, owner, balance):
self.__owner = owner # Приватный атрибут
self.__balance = balance # Приватный атрибут
def __update_balance(self, amount):
self.__balance += amount # Приватный метод
def get_owner(self):
return self.__owner # Публичный метод для доступа к приватному атрибуту
def get_balance(self):
return self.__balance # Публичный метод для доступа к приватному атрибуту
🔹Доступ к защищенным и приватным данным
account = BankAccount("Alice", 1000)
print(account.owner) # Доступ к публичному атрибуту
# Доступ к защищенному атрибуту через публичный метод
print(account.get_balance())
# Прямой доступ к защищенному атрибуту (не рекомендуется)
print(account._balance)
secret_account = SecretAccount("Bob", 5000)
print(secret_account.get_owner()) # Доступ к приватному атрибуту через публичный метод
print(secret_account.get_balance()) # Доступ к приватному атрибуту через публичный метод
# Прямой доступ к приватному атрибуту (ошибка)
# print(secret_account.__balance) # Ошибка AttributeError
🔸Заключение Инкапсуляция и управление доступом к данным помогают создавать более безопасные и управляемые программы. В следующем уроке мы изучим наследование и создание иерархий классов. Оставайтесь с нами! 🚀
➡️Читайте нас в Telegram и Сетке
#CODERIKK #ООП #Python #Инкапсуляция #Программирование #Обучение