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

Python の単一アンダースコアと二重アンダースコアの違いは何ですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-22 12:07:411021ブラウズ

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

Python の一重アンダースコアと二重アンダースコアの詳細

Python では、オブジェクト名の前に先頭のアンダースコアを使用して、特定の意味と動作を伝えます。

単一アンダースコア: 「内部使用」インジケーター

単一のアンダースコアは、属性またはメソッドがその独自のクラス内で使用されることを意図していることを示します。外部からのアクセスを阻止するのは慣例であり、強制されたルールではありません。さらに、モジュール内の関数名の前に 1 つのアンダースコアがある場合、モジュールの外部からインポートすべきではないことを意味します。

二重アンダースコア: 名前マングリング

二重アンダースコアトリガー名のマングリング。先頭のアンダースコアが削除されたクラス名が識別子の先頭に付けられるプロセスです。これは、派生クラスまたは外部コードのメンバーとの競合を避けるために、「プライベート」クラスのメンバーに対して行われます。ただし、決心したユーザーは引き続きこれらの変数にアクセスできることに注意することが重要です。

例:

次の例では、__superprivate はクラスの外ではアクセスできないように意図されています。一方、_semiprivate は内部使用の規則に従います:

class MyClass:
    def __init__(self):
        self.__superprivate = "Hello"
        self._semiprivate = ", world!"

クラスの外部でこれらのメンバーにアクセスする場合のみ、 _semiprivate は公開されます:

mc = MyClass()
print(mc._semiprivate)  # "Hello"
print(mc.superprivate)  # Attribute error

したがって、単一のアンダースコアは意図された内部使用を示し、二重のアンダースコアは名前のマングリングによる直接アクセスからメンバーを保護し、プライバシー層を提供しますが、絶対的なセキュリティを提供するわけではありません。

以上がPython の単一アンダースコアと二重アンダースコアの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。