Sobes.tech
Junior — Middle
70

Est-il possible d'accéder aux variables et méthodes privées en Python, et comment cela se fait-il?

Réponse de l'IA

sobes.tech IA

В Python нет настоящей приватности переменных и методов, как в некоторых других языках. Однако, для обозначения приватных членов класса используется соглашение с одним или двумя подчеркиваниями:

  • Одинарное подчеркивание _var — это просто соглашение, что переменная или метод являются внутренними и не предназначены для использования вне класса.
  • Двойное подчеркивание __var запускает механизм name mangling, который изменяет имя переменной внутри класса, чтобы затруднить к ней доступ извне.

Тем не менее, получить доступ к таким "приватным" переменным можно, зная их изменённое имя. Например:

class MyClass:
    def __init__(self):
        self.__private_var = 42

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

# Но можно обратиться через name mangling:
print(obj._MyClass__private_var)  # Выведет 42

Таким образом, приватность в Python — это скорее соглашение и механизм затруднения доступа, а не строгая защита.