При изучении языка программирования Python, можно столкнуться с ситуацией, когда перед именем объекта стоят одинарные или двойные подчеркивания. Например, можно встретить такой код:
class MyClass:
def __init__(self):
self.__private_var = 10
def _semi_private_method(self):
pass
В данном примере перед именем переменной private_var стоят два подчеркивания, а перед именем метода semi_private_method — одно подчеркивание. Что это значит?
Одинарное подчеркивание
Одинарное подчеркивание перед именем объекта используется для указания на то, что объект является внутренним и предназначен только для использования внутри класса, модуля или функции. Это не более чем соглашение между программистами и Python не предоставляет никаких средств для принудительного соблюдения этого соглашения. То есть, в принципе, можно обращаться к таким объектам извне, но это считается плохой практикой.
Двойное подчеркивание
Двойное подчеркивание перед именем объекта служит для создания «приватных» атрибутов класса. Это означает, что доступ к таким атрибутам извне класса будет затруднен. Python автоматически «прячет» такие атрибуты, изменяя их имена. Этот процесс называется «name mangling».
Например, в классе MyClass из примера выше, атрибут __private_var будет автоматически переименован в _MyClass__private_var. Таким образом, попытка обратиться к __private_var напрямую приведет к ошибке.
Однако стоит отметить, что, несмотря на «name mangling», доступ к «приватным» атрибутам все еще возможен, если знать, как Python переименовывает их. Поэтому двойное подчеркивание не делает атрибуты класса абсолютно недоступными, а лишь затрудняет к ним доступ.
В целом, использование одинарных и двойных подчеркиваний перед именами объектов в Python — это особенность синтаксиса языка, которую важно понимать и учитывать при написании кода.
Перейти в телеграм, чтобы получить результаты теста





Забрать
Добавить комментарий