Цугундер — это жаргонное название в языке программирования Python для двойного символа подчеркивания (
__
), используемого в именах специальных методов (также известных как dunder-методы), которые выполняют внутренние операции объектов и классов.
Антонимы: _одиночное_ подчеркивание, публичные методы
Синонимы: dunder, «double underscore», магические методы
Как пишется: цугундер
Ударение ставится на второй слог: цугУндер.
Эмодзи 📌 | Метод | Назначение | Пример |
---|---|---|---|
🔧 | __init__ | Конструктор объекта | def __init__(self): ... |
🔍 | __str__ | Строковое представление | return "Obj" |
📝 | __repr__ | «Официальное» представление объекта | return "MyClass()" |
➕ | __add__ | Оператор сложения | a + b |
✅ | __eq__ | Сравнение на равенство | a == b |
📞 | __call__ | Вызов объекта как функции | obj() |
🔄 | __len__ | Длина контейнера | len(obj) |
- Предназначены для переопределения поведения встроенных операторов и функций.
- Всегда окружены двойным подчеркиванием с обеих сторон.
- Интерпретатор Python автоматически вызывает их в нужных ситуациях.
- Изучите назначение каждого dunder-метода.
- Переопределяйте только те методы, которые действительно нужны.
- Соблюдайте соглашения об именах, чтобы код оставался понятным.
Идея специальных методов (dunder methods) восходит к ранним версиям Python (начиная с 1.0, 1994 г.). Поскольку язык требовал механизма для интеграции объектов с операторами (+, ==, len и др.), Guido van Rossum предложил использовать «магические» методы с двойным подчеркиванием. Со временем их количество постепенно росло, расширяя возможности метапрограммирования.
Guido van Rossum — автор языка Python, ввел концепцию специальных методов для унификации работы операторов и функций с пользовательскими объектами.
Tim Peters — разработчик и автор «Zen of Python», популяризовал использование dunder-методов в сообществе и описал лучшие практики их применения.
В: Что такое декораторы в Python?
О: Декораторы — функции, принимающие другую функцию (или класс) и возвращающие изменённый её вариант. Часто используются для логирования, проверки прав доступа и кэширования.
В: Как метаклассы связаны с цугундер-методами?
О: Метаклассы контролируют создание классов; они могут переопределять dunder-методы __new__
и __init__
на уровне метакласса, что позволяет изменять поведение всех создаваемых классов.
В: Для чего нужен __main__
?
О: Условие if __name__ == "__main__"
позволяет определить точку входа скрипта, отличая его запуск как самостоятельной программы от импорта в другие модули.