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

Mary-Kate Olsen
リリース: 2024-11-17 21:58:01
オリジナル
829 人が閲覧しました

How Do Variable Scopes Work in Python Classes?

Python クラスの変数スコープを理解する

Python クラスでの変数の宣言は、最初は混乱するかもしれません。この記事は、クラス コンテキストでの変数宣言に関連するさまざまなスコープとニュアンスを明確にすることを目的としています。

一般的なスコープ ルール:

  • クラス変数: クラス内の関数の外部で宣言されたこれらの変数は、すべてのクラス関数からアクセスできます。
  • ローカル変数: クラス内の関数の内部で宣言されたこれらの変数は、その関数内でのみアクセス可能です。
  • インスタンス変数: クラス内の関数内で self.(変数名) を使用して宣言され、これらの変数はすべてのクラス関数にアクセスできます。

インスタンス変数とグローバル変数:

インスタンス変数 (self.(変数名) を使用して宣言) は、グローバル変数 (関数またはクラスの外部で宣言) とは異なる動作をします。クラス内で宣言されたものはすべて技術的にはパブリックですが、インスタンス変数は個々のオブジェクト インスタンスにバインドされます。

例:

この例では、クラス変数はa と b はすべてのクラス関数にアクセスできます。ただし、インスタンス変数 self.a は各オブジェクト インスタンスに固有です。 __init__ で self.a を設定しても、クラス変数 a には影響しません。

保護された変数:

Python ではプライベート変数または保護された変数を明示的に定義しませんが、変数の先頭にアンダースコア (_) は保護されているとみなされます。技術的には、これらは依然としてクラス外からアクセスできますが、名前を変更するとアクセスが妨げられます。

プライベート変数:

二重アンダースコア (__) が接頭辞として付いた変数はプライベートとみなされます。それらの名前は、クラスの外部から直接アクセスするのを困難にするために壊れています。

追加のニュアンス:

  • ローカル関数内で self の外部に割り当てられた変数。(変数名) は、その関数の外では使用できません。
  • マングル防止保護されたプライベート変数は、クラスの外から完全にアクセスできないわけではありませんが、真のカプセル化に依存すべきではありません。

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

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