我有两个类Test_1
和Test_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的新手。