Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: naming, underscore

Разница между одинарным и двойным подчеркиванием?

Этот вопрос проверяет знание конвенций именования в Python с использованием одинарного и двойного подчеркивания, а также их роли в модификации доступа к атрибутам и методам.

Короткий ответ

  • Одинарное подчеркивание (_) используется как соглашение для обозначения "непубличных" атрибутов и методов, которые не предназначены для использования вне класса, но это не является жестким ограничением.

  • Двойное подчеркивание (__) используется для реализации механизма именования с учётом "защищённых" атрибутов, а также для создания уникальных имен, чтобы избежать конфликтов.

Длинный ответ

В Python подчеркивания в именах атрибутов и методов класса играют важную роль:

Одинарное подчеркивание (_)

Это соглашение, которое говорит о том, что атрибут или метод является внутренним для класса или модуля и не должен использоваться за его пределами. Однако это лишь конвенция и не имеет реального ограничения, то есть такие атрибуты все равно доступны. Пример:

class MyClass:
    	def __init__(self):
        	self._internal_value = 10
obj = MyClass()
print(obj._internal_value)  # Доступно, но не рекомендуется

Двойное подчеркивание (__)

Используется для создания "защищенных" атрибутов и методов, а также для предотвращения конфликтов имен с методами родительского класса. Python автоматически изменяет имя таких атрибутов в процессе выполнения, что делает их сложными для доступа извне. Пример:

class MyClass:
    	def __init__(self):
        	self.__private_value = 10

obj = MyClass()
# print(obj.__private_value)  # Ошибка: AttributeError
print(obj._MyClass__private_value)  # Доступно через измененное имя

Использование двойного подчеркивания изменяет имя атрибута (name mangling), что помогает избежать случайных конфликтов при наследовании.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    3

  • Сложность:

    7

Навыки

  • Python

    Python

Ключевые слова

#naming

#underscore

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.