Встречается на собеседованиях • сегодня

В чём разница между public, protected и private методами

В Python нет строгой инкапсуляции, но есть соглашения по именованию для обозначения уровня доступа:

  1. public - обычные методы, доступны везде. Имя без подчёркиваний:
    def public_method(self):

  2. protected - предназначены для использования внутри класса и его подклассов. Одно подчёркивание:
    def _protected_method(self):
    Это соглашение, а не ограничение - интерпретатор не запрещает доступ.

  1. 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 именем
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы