Python でクラスを操作する場合、メソッド内からクラス変数にアクセスする必要がある場合があります。ただし、メソッド内で変数を参照するだけでは、NameError が発生する可能性があります。
問題
次のコード スニペットを考えてみましょう:
<code class="python">class Foo(object): bar = 1 def bah(self): print(bar)</code>
このコードを実行しようとすると、「NameError: グローバル名 'bar' が定義されていません」が発生します。これは、変数 bar がクラス変数であり、メソッド bah が直接アクセスできないためです。
解決策
メソッド内でクラス変数にアクセスするには、 2 つのオプションがあります:
クラス変数を変更する場合は、Foo.bar を使用します。それ以外の場合は、self.bar を使用します。
例
正しいアプローチを使用してコード スニペットをリファクタリングします:
<code class="python">class Foo(object): bar = 1 def bah(self): print(self.bar) # Access the instance variable f = Foo() f.bah() # Prints 1</code>
このコードは 1 を出力します。インスタンス変数にアクセスします。クラス変数にアクセスしたい場合は、print ステートメントで self.bar を Foo.bar に変更するだけです。
以上がPython のメソッドからクラス変数にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。