私のコード:
class Num:
nums = []
def add(self, num):
self.nums.append(num)
def __str__(self):
return str(self.nums)
a = Num()
b = Num()
a.add(5)
print str(a)
print str(b)
生産する
[5]
[5]
b には何も追加されていませんが、
私のコード:
class Num:
nums = []
def add(self, num):
self.nums.append(num)
def __str__(self):
return str(self.nums)
a = Num()
b = Num()
a.add(5)
print str(a)
print str(b)
生産する
[5]
[5]
b には何も追加されていませんが、
nums はクラス属性であり、インスタンス属性ではないためです。
class Num:
def __init__(self):
self.nums = []
def add(self, num):
self.nums.append(num)
def __str__(self):
return str(self.nums)
このように実装すると、期待する動作が表示されます。
class Num:
nums = []
クラス定義nums
文で定義するとnums
、クラス変数になります。__init__
代わりに、インスタンスの属性として設定することにより、メソッドで定義します。
class Num:
def __init__(self): # self is the instance
self.nums = [] # setting nums on the instance