Python:新对象使用前一个对象的属性

Python:新对象使用前一个对象的属性,python,python-3.x,binding,scope,Python,Python 3.x,Binding,Scope,我正在创建三个游戏对象。但是,第二个和第三个对象没有初始化新的块列表。当我调试时,我可以看到他们使用来自初始游戏对象的列表,只是附加块。这是什么原因?如何让对象不使用相同的块列表 class Game(object): blocks = [] def __init__(self): cords = [ [0, 0], [0, 1], [0, 2], [0, 3], [1, 0], [1, 1], [1, 2],

我正在创建三个
游戏
对象。但是,第二个和第三个对象没有初始化新的
列表。当我调试时,我可以看到他们使用来自初始游戏对象的列表,只是附加块。这是什么原因?如何让对象不使用相同的
列表

class Game(object):

    blocks = []

    def __init__(self):
        cords = [
            [0, 0], [0, 1], [0, 2], [0, 3],
            [1, 0], [1, 1], [1, 2], [1, 3],
            [2, 0], [2, 1], [2, 2], [2, 3],
            [3, 0], [3, 1], [3, 2], [3, 3]
        ]

        random.shuffle(cords)

        for i in range(0, 16):
            self.blocks.append(Block(i + 1, cords[i][0], cords[i][1]))

这是因为您如何将
-定义为类属性。类属性不属于类的任何单个实例,并且在绑定到它的类级别上的任何位置共享

要使每个
游戏
对象都有自己的
,需要将
作为实例属性。您可以在
\uuu init\uuu
方法中将块绑定到类的每个实例,这样每个
游戏
都有自己的
块列表

def __init__(self):
    self.blocks = []

停止将对象绑定到类。