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__
はオブジェクトの初期化時に呼ばれます。
これらの命名規則を理解し、適切に使うことで、コードの可読性や意図がより明確になります。