多维类列表-覆盖问题

我想创建一个类列表,但是每次更改列表中的元素时,列表中的所有类元素都会被覆盖:

class TypeTest:
    def __init__(self):
    self.val = int()

data = list([TypeTest for _ in range(3)])

for i in range(3):
    data[i].val = i
    print([data[0].val, data[1].val, data[2].val])

最后,我需要一个多维数组,并且将具有一个更复杂的类,但是问题是相同的。

评论
  • _樱花巷
    _樱花巷 回复

    在for循环(列表理解)中实例化您的类对象。

    # instantiate your class object
    data = list([TypeTest() for _ in range(3)])
    
  • Donne
    Donne 回复

    您正在创建一个类引用数组,而不是对象(实例)引用,这意味着每个元素都指向同一事物-TypeTest类。

    要创建对象,只需使用

    data = np.array([TypeTest() for _ in range(3)])
    

    如果出于某种原因确实需要不同的类,则必须通过继承基类为每个元素创建一个新的类。