ホームページ > バックエンド開発 > Python チュートリアル > Python オブジェクト名の単一アンダースコアと二重アンダースコアの違いは何ですか?

Python オブジェクト名の単一アンダースコアと二重アンダースコアの違いは何ですか?

DDD
リリース: 2024-12-24 08:32:14
オリジナル
608 人が閲覧しました

What's the Difference Between Single and Double Underscores in Python Object Names?

Python オブジェクト名のアンダースコアをわかりやすく説明する

Python では、命名規則がオブジェクトの命名において重要な役割を果たします。オブジェクト名の前の 1 つおよび 2 つのアンダースコアは、プログラマがそのオブジェクトのスコープとアクセシビリティを理解するのに役立つ特定の意味を持っています。

Single Underscore (_name)

オブジェクト名の先頭に 1 つのアンダースコアがある場合は、そのオブジェクトがクラス内で内部的に使用されることを意味します。これは、オブジェクトがクラスの外部からアクセスまたは変更されることを意図していないことを示す方法です。ただし、この規則は強制的な制限ではなくガイドラインであることに注意することが重要です。

単一のアンダースコアは、他の場所からインポートすべきではないモジュールまたは関数を示すためにも使用されます。オブジェクト名の先頭にアンダースコアを付けることにより、他のプログラマに対して、そのオブジェクトをプライベート要素として扱う必要があることを示します。

Double Underscore (__name__)

先頭の二重アンダースコアは、オブジェクトの名前をバックグラウンドで変更する手法である名前マングリングに使用されます。この変換により、オブジェクトの名前が、クラス名とアンダースコアを含む修正バージョンに置き換えられます。

Python のドキュメントによると、二重アンダースコアは、オブジェクトが現在のクラス内のプライベート変数またはメソッドとして扱われる必要があることを示しています。ただし、名前のマングリングは絶対的なものではないことを理解することが重要です。決心した個人は、プライベートとしてマークされた変数にアクセスしたり変更したりできます。

gt;例

次の 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート