web-dev-qa-db-ja.com

すべての二重下線変数のリストを見つけますか?

関連: 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に組み込まれています。予約されている2つの二重アンダースコアキーワードはこれらだけですか?もうありますか?リストを入手できる場所はありますか?

[編集]
ブラウジングしていて、一連の二重アンダースコア変数の マインドマップ にリンクされている別の 質問 に遭遇しました。

22
Michael0x2a

文書化されているかどうかに関係なく、魔法の名前を確認したい場合は、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__'
28

Pythonで使用される完全なリストは Python言語リファレンスセクション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で持つだろう名前だと思います

1
atongsa

私がここで好きなダンダーとその使用法の包括的なリストがあります: magicmethods

0
F1Rumors