Sobes.tech
Back to questions
Junior — Middle
76

Можно ли обратиться к приватному методу внутри класса в Python извне его определения?

Answer from AI

sobes.tech AI

В Python нет строгой приватности методов, но есть соглашение: методы, начинающиеся с двойного подчеркивания (__method), считаются приватными и подвергаются манглингу имен (name mangling).

Это значит, что к такому методу нельзя обратиться напрямую по имени, но можно получить доступ, используя изменённое имя.

Пример:

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

obj = MyClass()
# Прямой вызов вызовет ошибку:
# obj.__private_method()  # AttributeError

# Но можно обратиться так:
obj._MyClass__private_method()  # Выведет: Это приватный метод

Таким образом, технически обратиться можно, но это не рекомендуется, так как нарушает инкапсуляцию.