__name__、特殊メソッド名

Pythonのコードを見ると、if __name__ == ‘__main__’ というコードが頻出します。

そもそも、Pythonでは、スクリプトが直接実行された場合には、変数__name__に__main__が代入されるというのが仕様だそうです。そこで、変数__name__に__main__が代入されているかチェックすることで、そのスクリプトが直接実行されたかを判定することが可能です。スクリプトが直接実行されない場合として、例えば、import文によって他のスクリプトにから読み出された場合が考えられます。

リファレンスには、__name__について、29.4. __main__ — トップレベルのスクリプト環境に記載されています。

また、__name__変数の判定については、以下のページにより具体的な説明が記載されています。

そもそも、Pythonでは、アンダーバーから始まるトークンに特殊な意味が持たされているようです。

2.3.2. 予約済みの識別子種 (reserved classes of identifiers)を参照すると、

  • _で始まる名前は、はimportによってインポートしない
  • __で始まる名前は、クラスプライベートの名前
  • __*__はシステムで定義された名前

システムで定義された名前のうち、特殊メソッドと呼ばれるものは、3.3. 特殊メソッド名にまとめられています。例えば、__init__はコンストラクタを意味します。

Pythonのアンダーバーについては、以下のページに具体的な説明が記載されています。

Leave a reply

Your email address will not be published. Required fields are marked *