はじめに
Pythonを勉強していて、妙を感じるところがあったので備忘録として残そうと思いました。
クラス変数とインスタンス変数
クラス変数はインスタンスを生成してもすべてのインスタンスで値を共有してしまう。
共有したくない場合は例のようにインスタンス変数を使用しないといけない。
クラス変数
class Instance:
values = [] # クラス変数
def add_list(self, value):
self.values.append(value)
ins1 = Instance()
ins1.add_list("データ1")
ins2 = Instance()
ins2.add_list("データ2")
print(ins1.values)
# 結果
# ['データ1', 'データ2']
インスタンス変数
class Instance:
def __init__(self):
self.values = [] # インスタンス変数
def add_list(self, value):
self.values.append(value)
ins1 = Instance()
ins1.add_list("データ1")
ins2 = Instance()
ins2.add_list("データ2")
print(ins1.values)
# 結果
# ['データ1']