Pythonのアンダースコアの意味と使い方

Pythonの変数やメソッド名におけるアンダースコアの使い方にはいくつかの重要な意味があります。それぞれの用途とその背後にある原則を理解することで、コードの可読性と保守性が向上します。

シングルアンダースコア _

シングルアンダースコアは、プライベートに近い意味合いを持ちますが、実際にアクセスを制限するわけではありません。主に「内部使用専用」を示す慣例です。

class MyClass:
    def _internal_method(self):
        print("内部メソッド")

シングルアンダースコアは、他の開発者に対して「このメソッドは外部から直接呼び出さない方が良い」というサインとして使われます。from module import *の際には、シングルアンダースコアで始まる名前はインポートされません。

ダブルアンダースコア __(名前マングリング)

ダブルアンダースコアを使うと、名前マングリングが行われ、変数名が自動的に変更されます。これにより、サブクラスでの名前の衝突を防ぎます。ダブルアンダースコアは主に「クラス内でのプライベート」を示します。

class MyClass:
    def __private_method(self):
        print("プライベートメソッド")

この例では、__private_method_MyClass__private_methodにマングリングされ、外部やサブクラスからアクセスしにくくなります。

ダブルアンダースコアで囲まれた名前 __name__

__init____str__のようなメソッドは、特殊な目的を持つ「マジックメソッド」です。これらのメソッドは、Pythonのシステムで自動的に呼び出され、特定の動作を実現します。例えば、__init__はオブジェクトの初期化時に呼ばれます。

これらの命名規則を理解し、適切に使うことで、コードの可読性や意図がより明確になります。