ホームページ  >  記事  >  バックエンド開発  >  Pythonのクラス変数とメンバー変数の使用例チュートリアル

Pythonのクラス変数とメンバー変数の使用例チュートリアル

WBOY
WBOYオリジナル
2016-06-16 08:42:331067ブラウズ

この記事では、Python のクラス変数とメンバー変数の使い方をサンプル形式で説明しており、Python プログラミングの参考になります。皆さんの参考に共有してください。詳細は以下のとおりです。

まず次のコードを見てください:

class TestClass(object):
  val1 = 100
  
  def __init__(self):
    self.val2 = 200
  
  def fcn(self,val = 400):
    val3 = 300
    self.val4 = val
    self.val5 = 500 
 if __name__ == '__main__':
  inst = TestClass()
   
  print TestClass.val1
  print inst.val1
  print inst.val2
  print inst.val3
  print inst.val4  
  print inst.val5

ここで、val1 はクラス変数であり、クラス名によって直接呼び出すことも、オブジェクトによって呼び出すこともできます。 val2 は、クラスのオブジェクトによって呼び出すことができるメンバー変数です。ここで、self の意味はインスタンス オブジェクトを表すことであるため、メンバー変数は self. の形式で指定する必要があることがわかります。 val3 はメンバー変数ではなく、関数 fcn 内の単なるローカル変数です。 val4 と val5 はどちらもメンバー変数ではありませんが、self. として指定されますが、コンストラクターでは初期化されません。

次のコードをもう一度見てください (# 記号の後のコードが実行結果です):

Python のクラス変数は C++ の静的変数とは異なり、クラスのすべてのオブジェクトで共有されないことがわかります。
inst1 = TestClass()
inst2 = TestClass()

print TestClass.val1 # 100
print inst1.val1   # 100

inst1.val1 = 1000  
print inst1.val1   # 1000
print TestClass.val1 # 100

TestClass.val1 =2000 
print inst1.val1   # 1000
print TestClass.val1 # 2000

print inst2.val1   # 2000   

inst3 = TestClass() 
print inst3.val1   # 2000

クラス自体には独自のクラス変数があります (メモリに保存されます)。TestClass クラスのオブジェクトが構築されると、現在のクラス変数のコピーがオブジェクトに与えられます。オブジェクトをコピーすると、クラス変数の値が になります。さらに、オブジェクトを介してクラス変数を変更しても、誰もが独自のコピーを持っているため、他のオブジェクトのクラス変数の値には影響しません。クラス自体が所有するクラス変数の値には影響しません。クラス自体が所有するクラス変数の値は、クラス自体のみが変更できます

この記事で説明した例が、Python でのクラス変数とメンバー変数の使用法を誰もが理解し、習得するのに役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。