ホームページ >バックエンド開発 >Python チュートリアル >質問の形式を念頭に置き、核心的な問題に焦点を当てた、いくつかのタイトルのオプションを次に示します。 ダイレクトかつクリア: * Python のメソッド内の静的クラス変数にアクセスするにはどうすればよいですか? * なぜ私は
メソッド内で静的クラス変数にアクセスしようとしたときに「NameError」が発生した場合は、構文を調整する必要があります。これを効果的に行う方法は次のとおりです。
指定されたコードのコンテキスト内:
<code class="python">class Foo(object): bar = 1 def bah(self): print(bar) f = Foo() f.bah()</code>
「bar」が「bah」メソッド内のグローバル変数としてアクセスされるため、エラーが発生します。これを解決するには、次の 2 つのオプションを使用できます:
1.クラス属性 (静的変数) によるアクセス:
<code class="python">def bah(self): print(Foo.bar)</code>
この構文は、特定のインスタンスに関連付けられることなく、クラス "Foo" の静的変数として "bar" にアクセスします。
2.インスタンス属性によるアクセス:
<code class="python">def bah(self): print(self.bar)</code>
この構文は、メソッド内のインスタンス変数として「bar」にアクセスします。 「self.bar」に割り当てを行うと、「Foo」のインスタンスごとに「bar」のインスタンス固有のバージョンが作成されます。
補足:
または、 "self.bar" としてのクラス属性も、クラス内のすべてのインスタンスに影響します。
<code class="python">def bah(self): print(self.bar) self.bar = 2</code>
この場合、他のインスタンスに対する後続の "bah" 呼び出しでは、"2" が出力されます。これは、インスタンス固有のバージョンの「バー」はその場で作成されます。
以上が質問の形式を念頭に置き、核心的な問題に焦点を当てた、いくつかのタイトルのオプションを次に示します。 ダイレクトかつクリア: * Python のメソッド内の静的クラス変数にアクセスするにはどうすればよいですか? * なぜ私はの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。