ホームページ  >  記事  >  バックエンド開発  >  変数スコープは Python クラス内でどのように機能しますか?

変数スコープは Python クラス内でどのように機能しますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-19 08:13:02376ブラウズ

How do variable scopes work within Python classes?

Python クラスの変数スコープ

スコープの変動

Python クラスでは、変数のスコープが異なります宣言されている場所に基づく:

  • クラスレベル変数 (外部関数): すべてのクラス関数 (パブリック変数) にアクセス可能。
  • 関数ローカル変数 (クラス関数内): その特定の関数 (スコープ内) に制限されます。

自己変数とグローバル変数

クラス関数内でself.(変数名)で変数を宣言すると、すべてのクラス関数からアクセスできるようになります。ただし、グローバル変数とは異なり、これらの変数は現在のインスタンスに固有であり、クラスレベル変数をオーバーライドしません。

追加ニュアンス

  • 単一vs. 二重アンダースコア接頭辞: 単一のアンダースコアで始まる変数 (例: _variable) は保護されているとみなされ、クラス内でのみアクセスする必要があります。二重アンダースコアで始まる変数 (__variable など) はマングルされ、事実上プライベートになります。
  • ローカル変数: クラス関数内で宣言された変数は、それらの関数に対してローカルであり、クラス スコープには影響しません。

次のクラスについて考えます。

class Test:
    a = None
    b = None

    def __init__(self, a):
        print(self.a)
        self.a = a
        self._x = 123
        self.__y = 123
        b = 'meow'
  • a と b は、どのクラスからでもアクセスできるクラスレベル変数です。 instance.
  • a は、__init__ のインスタンス固有の self.a によってオーバーライドされます。
  • _x は保護されており、パブリック API の一部ではありません。
  • __y はマングルされており、プライベートです
  • b は、__init__ 内でのみアクセスできるローカル変数です。

以上が変数スコープは Python クラス内でどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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