Python 当其他对象处于活动状态时,要追加的类内的列表

Python 当其他对象处于活动状态时,要追加的类内的列表,python,Python,我正在创建一个学校项目,需要在列表中记录子程序每次迭代的事件。然而,它附加了两个玩家列表。我该如何阻止这种情况发生 例如: class Player: l = list() def append_list(self,i): self.l.append(i) p1 = Player() p2 = Player() for i in range(0,5): p1.append_list(i) print(p1.l) p2.append_

我正在创建一个学校项目,需要在列表中记录子程序每次迭代的事件。然而,它附加了两个玩家列表。我该如何阻止这种情况发生

例如:

class Player:

    l = list()
    def append_list(self,i):
        self.l.append(i)

p1 = Player()
p2 = Player()

for i in range(0,5):

    p1.append_list(i)
    print(p1.l)
    p2.append_list(i)
    print(p1.l)
此代码输出:

[0]
[0, 0]
[0, 0, 1]
[0, 0, 1, 1]
[0, 0, 1, 1, 2]
[0, 0, 1, 1, 2, 2]
[0, 0, 1, 1, 2, 2, 3]
[0, 0, 1, 1, 2, 2, 3, 3]
[0, 0, 1, 1, 2, 2, 3, 3, 4]
[0, 0, 1, 1, 2, 2, 3, 3, 4, 4]
但我需要它输出:

[0]
[0]
[0, 1]
[0, 1]
[0, 1, 2]
[0, 1, 2]
[0, 1, 2, 3]
[0, 1, 2, 3]
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4]
使用单独的实例变量而不是共享类变量-这样,每个玩家实例都有自己的列表而不是共享列表:

class Player:
    def __init__(self):
        self.l = []       # create a instance list l

    def append_list(self,i):
        self.l.append(i)

# other code identical
输出:

[0]
[0]
[0, 1]
[0, 1]
[0, 1, 2]
[0, 1, 2]
[0, 1, 2, 3]
[0, 1, 2, 3]
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4]
更多: