Встречается на собеседованиях • сегодня
В чём разница между public, protected и private методами
В Python нет строгой инкапсуляции, но есть соглашения по именованию для обозначения уровня доступа:
-
public - обычные методы, доступны везде. Имя без подчёркиваний:
def public_method(self): -
protected - предназначены для использования внутри класса и его подклассов. Одно подчёркивание:
def _protected_method(self):
Это соглашение, а не ограничение - интерпретатор не запрещает доступ.
- private - должны использоваться только внутри класса. Два подчёркивания:
def __private_method(self):
Python выполняет name mangling (искажение имени), добавляя_ИмяКлассаперед методом:_ClassName__private_method.
Пример:
python
class MyClass:
def public_method(self):
return "Public"
def _protected_method(self):
return "Protected"
def __private_method(self):
return "Private"
obj = MyClass()
print(obj.public_method()) # OK
print(obj._protected_method()) # Warning
print(obj.__private_method()) # AttributeError
print(obj._MyClass__private_method()) # Доступ с mangling именем
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы