変数や関数の接頭語にアンダーバー('_')を付ける
Pythonでは、変数や関数の名前の前にアンダーバー(_
)をつけることで特別な意味を持たせることがあります。それぞれのケースについて説明します。
-
単一のアンダーバー(
_
)を接頭辞として使用する場合:
この慣例は、変数やメソッドが内部的に使われる(プライベート)ことを示します。つまり、この変数やメソッドはそのモジュールやクラスの内部でのみ使用され、外部からは直接アクセスすべきではないことを示しています。ただし、Pythonでは実際のアクセス制御(privateのような)はないため、これはあくまで慣例であり、強制されるわけではありません。def _private_function(): pass class MyClass: def _internal_method(self): pass
-
アンダーバー(
_
)を接尾辞として使用する場合:
この慣例は、組み込みのPythonキーワードとの名前の衝突を避けるために使われます。例えば、class
やdef
などのPythonの予約語を変数名として使いたい場合などに使用します。class_ = MyClass()
-
二重のアンダーバー(
__
)を接頭辞として使用する場合:
この慣例は、メソッドや属性がクラスの内部でのみ使用されること、特にサブクラスでのオーバーライドを避けるために使われます(名前のマングリング)。ただし、これも完全なアクセス制限ではなく、特定のパターンを使ってアクセスすることは可能です。class MyClass: def __private_method(self): pass
-
二重のアンダーバー(
__
)を接頭辞および接尾辞として使用する場合:
これらの名前は、Pythonの特殊メソッドや属性(通常はマジックメソッドやデュンダーメソッドと呼ばれます)を指定するために使われます。これらのメソッドは、特定の構文(演算子オーバーロードなど)に対応したり、特定の関数(len()
など)に対応したりするために使用されます。
class MyClass:
def __init__(self):
pass
def __len__(self):
return
※マジックメソッドとは:https://blog.codecamp.jp/python-class-code
Discussion