クラス属性とインスタンス属性: __init__() の内部と外部の変数
オブジェクト指向プログラミングでは、クラス属性とインスタンス属性が重要な役割を果たします。役割。しかし、変数を __init__() メソッドの内部に配置する場合と外部に配置する場合の違いは何でしょうか?この区別を詳しく見てみましょう。
指定されたコード スニペットを考えてみましょう。
<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>
__init__() の外部の変数
__init__() の外部で定義された変数クラスに属しています。これらは、そのクラスから作成されたすべてのインスタンスに共通です。たとえば、WithoutClass クラスの場合:
<code class="python">WithoutClass.value = "Bob"</code>
WithoutClass クラスのインスタンス経由でこの変数にアクセスすると、同じ値「Bob」が返されます。
__init__() 内の変数
対照的に、__init__() 内で定義され、先頭に self. が付いた変数は、それぞれの個別のオブジェクトに属します。 __init__() 内で変数を設定すると、そのオブジェクトに固有のインスタンス属性になります。
<code class="python">WithClass().value = "Alice" # Unique to this instance</code>
WithClass クラスの別のインスタンスからこの同じ変数にアクセスすると、別の値が生成されます:
<code class="python">WithClass().value = "Bob" # Unique to this instance</code>
影響
変数を宣言する場所の選択は、その動作に影響を及ぼします。
以上があなたの記事に適した質問ベースのタイトルをいくつか紹介します。 * クラス属性とインスタンス属性: Python で変数を定義する場所は? * Python オブジェクト指向プログラミング: クラス属性を使用する場合の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。