实例值被最新的传入值覆盖

时间:2020-10-02 08:56:54

标签: python python-3.x oop

我有两个类Test_1Test_2,其中test_2包含方法setValues

class Test_1():

    def __init__(self):
        self.dim = float
        self.list = Test_2()


    def init(self, dim, valuesT, valuesW):
        self.dim = dim
        self.list = [Test_2()] * dim


        for i in range(self.dim):
            self.list[i].setValues(mean[i], valuesT[i], valuesW[i])


class Test_2():

    def __init__(self):

        self.mean = float
        self.T = float
        self.W = float
        
    def setValues(self, mean, T, W): 

        self.mean = mean
        self.T = abs(mean - T) 
        self.W = abs(W - mean) 

当我创建Test_1的实例并通过传递参数init调用此类的(3,[1,2,3],[3,4,5], [6,7,8])方法时,我期望创建3个Test_2类的实例,并且用于在列表对象中初始化的T和W值。但是,事实并非如此,所有3个Test_2对象的T和W值似乎都被覆盖为最新的T和W值。下面的代码产生值:

1 3 6

6 6 6

    for i in range(self.dim):
        self.list[i].setValues(mean[i], T[i], W[i])
        print("List while in loop: ", self.list[i].mean)

    for i in range(self.dim):
        print("List after loop: ", self.list[i].mean)

任何人都可以帮助我们弄清楚为什么会这样吗?我是OOP的新手。

0 个答案:

没有答案