Python では、命名規則がオブジェクトの命名において重要な役割を果たします。オブジェクト名の前の 1 つおよび 2 つのアンダースコアは、プログラマがそのオブジェクトのスコープとアクセシビリティを理解するのに役立つ特定の意味を持っています。
オブジェクト名の先頭に 1 つのアンダースコアがある場合は、そのオブジェクトがクラス内で内部的に使用されることを意味します。これは、オブジェクトがクラスの外部からアクセスまたは変更されることを意図していないことを示す方法です。ただし、この規則は強制的な制限ではなくガイドラインであることに注意することが重要です。
単一のアンダースコアは、他の場所からインポートすべきではないモジュールまたは関数を示すためにも使用されます。オブジェクト名の先頭にアンダースコアを付けることにより、他のプログラマに対して、そのオブジェクトをプライベート要素として扱う必要があることを示します。
先頭の二重アンダースコアは、オブジェクトの名前をバックグラウンドで変更する手法である名前マングリングに使用されます。この変換により、オブジェクトの名前が、クラス名とアンダースコアを含む修正バージョンに置き換えられます。
Python のドキュメントによると、二重アンダースコアは、オブジェクトが現在のクラス内のプライベート変数またはメソッドとして扱われる必要があることを示しています。ただし、名前のマングリングは絶対的なものではないことを理解することが重要です。決心した個人は、プライベートとしてマークされた変数にアクセスしたり変更したりできます。
次の Python クラスを考えてみましょう。
class MyClass(): def __init__(self): self.__superprivate = "Hello" self._semiprivate = ", world!" mc = MyClass() print(mc._semiprivate) # Accessible print(mc.__superprivate) # Not accessible outside the class
Inこの例では、__superprivate 変数は二重アンダースコアを使用してプライベートとしてマークされていますが、_semiprivate 変数は単一のアンダースコアを使用します。 __superprivate 変数はクラスの外部からアクセスできませんが、_semiprivate 変数はアクセスできますが、クラスの内部にあると見なす必要があります。
以上がPython オブジェクト名の単一アンダースコアと二重アンダースコアの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。