Junior — Middle
79
Hoe onderscheid je de toegangsniveaus private, protected en public in objectgeoriënteerd programmeren, en waarin verschillen ze van elkaar?
Bedrijven waar gevraagd werd
ИП Калюков Н.С.
Antwoord van 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()) # Доступ через метод класса