Sobes.tech
Back to questions
Junior — Middle
46

Как определить метод класса как приватный в объектно-ориентированном программировании?

Companies where asked
МТСМТС
Оптимакрос

Answer from AI

sobes.tech AI

В Python нет строгой приватности методов, как в некоторых других языках (например, Java или C++). Однако, по соглашению, методы, имена которых начинаются с двойного подчеркивания __, считаются приватными и подвергаются манглингу имен (name mangling), что затрудняет их вызов извне класса.

Пример:

class MyClass:
    def __private_method(self):
        print("Это приватный метод")

    def public_method(self):
        self.__private_method()

obj = MyClass()
obj.public_method()  # Работает
# obj.__private_method()  # Ошибка: AttributeError

# Но можно вызвать так:
obj._MyClass__private_method()  # Работает, но не рекомендуется

Таким образом, чтобы определить метод как приватный, нужно назвать его с двойным подчеркиванием в начале имени.