我想在python中创建对象数组。

class user:
    j = [0, 0]

AllUsers = []
AllUsers.append(user)
AllUsers.append(user)

AllUsers[0].j[0] = 1

for i in AllUsers:
    print(i.j)


我期望输出:

[1, 0]
[0, 0]


但正在得到:

[1, 0]
[1, 0]


错误在哪里?

因此,我已经看到“数组数组”存在类似的问题,但是我无法使用它们的解决方案。

最佳答案

您在混淆实例和类。这是一个工作示例:

class user:
    def __init__(self):
        self.j = [0, 0]


AllUsers = []
AllUsers.append(user())  # note the extra () which creates a new instance
AllUsers.append(user())

AllUsers[0].j[0] = 1

for i in AllUsers:
    print(i.j)

关于python - 为什么列表中所有对象的属性都被更改?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45117443/

10-11 04:26