init
内および外部の変数 Python クラス内で変数を宣言する場所は、そのクラスに大きな影響を与える可能性があります。行動。次の 2 つのクラスについて考えてみましょう。
<code class="python">class WithClass(): def __init__(self): self.value = "Bob" def my_func(self): print(self.value) class WithoutClass(): value = "Bob" def my_func(self): print(self.value)</code>
クラス変数とインスタンス変数
これら 2 つのクラスの主な違いは、変数値が宣言される場所にあります。 WithClass では、__init__ メソッド内で宣言され、インスタンス変数になります。これは、WithClass の各インスタンスが value 属性の独自の独立したコピーを持つことを意味します。
一方、WithoutClass では、value 属性は __init__ メソッドの外で宣言され、クラス変数になります。結果として、WithoutClass のすべてのインスタンスは、value 属性の同じ単一インスタンスを共有します。
Initializer メソッド
WithClass の __init__ メソッドは、各インスタンスの初期化子として機能します。オブジェクトインスタンス。インスタンスが作成されると、__init__ メソッドが呼び出され、self.value 属性に値「Bob」が割り当てられます。この値はインスタンスに保存され、オブジェクト内の他のメソッドで使用できます。
結果
変数を宣言する場所の決定は、変数に影響を与える可能性があります。プログラムの動作。クラスの各インスタンスが特定の属性に対して独自の一意の値を持つ必要がある場合は、__init__ メソッド内でインスタンス変数として宣言する必要があります。あるいは、クラスのすべてのインスタンスが属性の同じ値を共有する必要がある場合、その属性を __init__ メソッドの外部でクラス変数として宣言できます。
したがって、重要な違いは、変数を次のようにするかどうかです。クラスのすべてのインスタンス間で共有される (クラス変数) か、個々のインスタンスに固有になる (インスタンス変数)。
以上がインスタンス変数とクラス変数: Python で変数を宣言する場所は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。