Встречается на 2% собеседований по Python
В чём разница между 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
интервью вопросы и ответы