Sobes.tech
Back to questions
Junior — Middle
50

Каким образом в Python объявляются приватные переменные и методы внутри класса?

Answer from AI

sobes.tech AI

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

  1. Одинарное подчёркивание _var — это соглашение, что переменная или метод предназначены для внутреннего использования (неофициальная приватность).

  2. Двойное подчёркивание __var — приводит к манглингу имени (name mangling), то есть имя переменной внутри класса изменяется, чтобы затруднить доступ извне.

Пример:

class MyClass:
    def __init__(self):
        self._internal_var = 1  # условно приватная
        self.__private_var = 2  # имя будет изменено

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

obj = MyClass()
print(obj._internal_var)       # доступ возможен, но не рекомендуется
# print(obj.__private_var)    # вызовет ошибку
print(obj._MyClass__private_var)  # доступ через манглинг имени

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