Ответ 1
Короткий ответ: нет. Для более длинного ответа, который получил плохо из-под контроля, продолжайте читать...
Нет исчерпывающей таблицы этих __dunder_names__
(также не их официального названия!), насколько мне известно. Есть несколько источников:
-
Единственной реальной "магической константой" является
__debug__
: aSyntaxError
попытаться присвоить это имя. Он включил в список констант и упомянул в контексте theassert
. -
Другое имя уровня модуля с конкретным использованием инструкцией
__all__
, которое документировано вместе с инструкциейimport
. -
В справочной системе
__main__
- это среда верхнего уровня, в которой выполняется script. -
__future__
предназначен для доступа к языковым функциям, которые еще не являются обязательными (например,print_function
для заменыprint
в Python 2).
Большинство остальных (__name__
, __file__
и т.д.) добавляются в модули с помощью системы импорта, поэтому перечислены в импортную документацию.
Существует также много объектов, связанных с объектами. Основные методы реализации встроенного поведения (например, __eq__
и __ge__
, как вы упоминаете) перечислены в документации модели данных. Но существует множество других, более конкретных имен; например, существует несколько связанных с исключениями, таких как __cause__
и __traceback__
, в документации по исключениям.
Обратите внимание, что в большинстве случаев нет ничего особо "волшебного", они просто регулярные атрибуты и могут быть назначены по своему усмотрению. Однако они считаются зарезервированными для внутреннего оборудования Python, поэтому вы не должны добавлять свои собственные; per ссылка на язык "зарезервированные классы идентификаторов" :
Любое использование имен
__*__
в любом контексте, которое не следует явно документированному использованию, подвержено поломке без предупреждения.
Тем не менее, есть пара общего использования, которое, как я полагаю, не указано нигде в официальных документах, например __author__
и __version__
; см., например, Каков общий формат заголовков файлов Python? и Каково происхождение __author__? Некоторые из них имеют полу -фициальный статус через PEP-8, но об этом.
Несколько других проложили этот путь, взглядами этого: