Python クラスの変数スコープを理解する
Python クラスでの変数の宣言は、最初は混乱するかもしれません。この記事は、クラス コンテキストでの変数宣言に関連するさまざまなスコープとニュアンスを明確にすることを目的としています。
一般的なスコープ ルール:
インスタンス変数とグローバル変数:
インスタンス変数 (self.(変数名) を使用して宣言) は、グローバル変数 (関数またはクラスの外部で宣言) とは異なる動作をします。クラス内で宣言されたものはすべて技術的にはパブリックですが、インスタンス変数は個々のオブジェクト インスタンスにバインドされます。
例:
この例では、クラス変数はa と b はすべてのクラス関数にアクセスできます。ただし、インスタンス変数 self.a は各オブジェクト インスタンスに固有です。 __init__ で self.a を設定しても、クラス変数 a には影響しません。
保護された変数:
Python ではプライベート変数または保護された変数を明示的に定義しませんが、変数の先頭にアンダースコア (_) は保護されているとみなされます。技術的には、これらは依然としてクラス外からアクセスできますが、名前を変更するとアクセスが妨げられます。
プライベート変数:
二重アンダースコア (__) が接頭辞として付いた変数はプライベートとみなされます。それらの名前は、クラスの外部から直接アクセスするのを困難にするために壊れています。
追加のニュアンス:
以上が変数スコープは Python クラスでどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。