На этом шаге мы рассмотрим их назначение и применение.
Пожалуй, это удивляет, но искажение имен не применяется, если имя начинается и заканчивается двойными символами подчеркивания. Интерпретатор Python не трогает переменные, окруженные префиксом и постфиксом, которые состоят из двойных символов подчеркивания:
>>> class PrefixPostfixTest: def __init__(self): self.__bam__ = 42 >>> PrefixPostfixTest().__bam__ 42
Однако имена, у которых есть начальный и замыкающий двойной символ подчеркивания, в языке зарезервированы для специального применения.
Это правило касается таких имен, как метод __init__() для конструкторов объектов или метод __call__(), который делает объекты вызываемыми.
Эти дандер-методы часто упоминаются как магические методы, однако в сообществе Python многим разработчикам, это слово не нравится. Такое название подразумевает, что применение дандер-методов не приветствуется, и это абсолютно не соответствует действительности. В Python они представляют собой ключевое функциональное средство и должны применяться по мере необходимости. В них нет ничего "магического" или тайного.
Тем не менее в контексте согласованных правил именования лучше воздержаться от использования имен, которые начинаются и заканчиваются двойными символами подчеркивания, в своих собственных программах - во избежание конфликтов с последующими версиями языка Python.
На следующем шаге мы рассмотрим одинарный символ подчеркивания.