Junior — Middle
61
Объектілерді бағдарлау бағдарламалауында private, protected және public қол жетімділік деңгейлерін қалай ажыратуға болады, және олар қалай ерекшеленеді?
Сұралған компаниялар
ИП Калюков Н.С.
AI-дан жауап
sobes.tech AI
В объектно-ориентированном программировании уровни доступа определяют, какие части кода могут обращаться к определённым членам класса (переменным и методам):
- private — доступ разрешён только внутри самого класса. Члены с таким уровнем доступа недоступны извне и в подклассах.
- protected — доступ разрешён внутри класса и его подклассов (наследниках). В Python это реализуется соглашением с одним подчёркиванием
_, хотя строгой защиты нет. - public — доступ разрешён отовсюду, нет ограничений.
В Python нет строгой инкапсуляции, но есть соглашения:
- Имя без подчёркиваний — public.
- Имя с одним подчёркиванием (
_var) — protected (рекомендуется не использовать вне класса и наследников). - Имя с двумя подчёркиваниями (
__var) — private, с механизмом name mangling, чтобы усложнить доступ извне.
Пример:
class Example:
def __init__(self):
self.public_var = 1
self._protected_var = 2
self.__private_var = 3
def get_private(self):
return self.__private_var
obj = Example()
print(obj.public_var) # Доступно
print(obj._protected_var) # Доступно, но не рекомендуется
# print(obj.__private_var) # Ошибка
print(obj.get_private()) # Доступ через метод класса