Junior — Middle
89
Wie unterscheiden sich die Zugriffslevels private, protected und public in der objektorientierten Programmierung und worin unterscheiden sie sich?
Unternehmen wurden gefragt
ИП Калюков Н.С.
Antwort von AI
sobes.tech KI
В объектно-ориентированном программировании уровни доступа определяют, какие части кода могут обращаться к определённым членам класса (переменным и методам):
- 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()) # Доступ через метод класса