x
インスタンス変数ではなく、クラス変数として作成しました。変数をクラスの特定のインスタンスに関連付けるには、次のようにします。
class myObject(object):
def __init__(self): # The "constructor"
self.x = [] # Assign x to this particular instance of myObject
>>> debug: []
>>> debug: []
何が起こっているのかをもう少し詳しく説明するには、同じことをもう少し明示的に (より詳細に) 示したこの小さなモックアップを見てください。
class A(object):
class_var = [] # make a list attached to the A *class*
def __init__(self):
self.instance_var = [] # make a list attached to any *instance* of A
print 'class var:', A.class_var # prints []
# print 'instance var:', A.instance_var # This would raise an AttributeError!
print
a = A() # Make an instance of the A class
print 'class var:', a.class_var # prints []
print 'instance var:', a.instance_var # prints []
print
# Now let's modify both variables
a.class_var.append(1)
a.instance_var.append(1)
print 'appended 1 to each list'
print 'class var:', a.class_var # prints [1]
print 'instance var:', a.instance_var # prints [1]
print
# So far so good. Let's make a new object...
b = A()
print 'made new object'
print 'class var:', b.class_var # prints [1], because this is the list bound to the class itself
print 'instance var:', b.instance_var # prints [], because this is the new list bound to the new object, b
print
b.class_var.append(1)
b.instance_var.append(1)
print 'class var:', b.class_var # prints [1, 1]
print 'instance var:', b.instance_var # prints [1]