Поиск списка всех двухзначных переменных?

Связанный: Каков общий формат заголовка файлов Python?

Где я могу найти список всех переменных/ключевых слов с двойным подчеркиванием, которые обычно используются в Python?

В Python переменные, начинающиеся и заканчивающиеся двойным подчеркиванием, обычно предназначены для хранения метаданных или встроены в систему. Например,

#!/usr/bin/env python

__author__ = 'Michael0x2a'
__license__ = 'GPL'

class Test(object):
    def __init__(self):
        print 'Hello World!'

if __name__ == '__main__':
    t = Test()

Я почти уверен, что __author__ и __license__ довольно хорошо известны. Какие еще есть переменные метаданных с двойным подчеркиванием? Можно ли где-нибудь проверить исчерпывающий список? Могу ли я просто сделать свой собственный, или есть несколько из них, которые стали де-факто стандартами, которые я должен использовать?

Такие вещи, как __init__, __name__ и __doc__, в значительной степени встроены в Python. Это только два зарезервированных ключевых слова с двойным подчеркиванием? Есть еще? Есть ли место, где я могу получить список?

[Редактировать]
Я просматривал и столкнулся с другим вопросом, который связан с картой разума с двумя знаками подчеркивания.

Ответы

Ответ 1

Если вы хотите увидеть магические имена независимо от того, задокументированы они или нет, перейдите в каталог Lib и запустите:

egrep -oh '__[A-Za-z_][A-Za-z_0-9]*__' *.py | sort | uniq

Это производит:

'__all__'
'__args__'
'__author__'
'__bases__'
'__builtin__'
'__builtins__'
'__cached__'
'__call__'
'__class__'
'__copy__'
'__credits__'
'__date__'
'__decimal_context__'
'__deepcopy__'
'__dict__'
'__doc__'
'__exception__'
'__file__'
'__flags__'
'__ge__'
'__getinitargs__'
'__getstate__'
'__gt__'
'__import__'
'__importer__'
'__init__'
'__ispkg__'
'__iter__'
'__le__'
'__len__'
'__loader__'
'__lt__'
'__main__'
'__module__'
'__mro__'
'__name__'
'__package__'
'__path__'
'__pkgdir__'
'__return__'
'__safe_for_unpickling__'
'__setstate__'
'__slots__'
'__temp__'
'__test__'
'__version__'

Ответ 3

когда я использую

dir(object)

я получил это:


'__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__has
h__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__'
, '__setattr__', '__sizeof__', '__str__', '__subclasshook__'

и я думаю, что это имена, которые каждый объект будет иметь в Python