我创建了一个对象类型..在初始化后我将其推入列表中。 但由于某种原因,行为并不像预期的那样。 让我输入示例代码..然后输出。
def allignDatesToWhenWasItemSold(pilotInstance):
unitsSoldPerDay = pilotInstance._units_sold_per_day
productPart = pilotInstance._product
date = productPart._date
quantity = pilotInstance._product._quantity
listOfPilotInstance = []
for i in range(len(unitsSoldPerDay)):
perDayQuantity = unitsSoldPerDay[i]
#modDate = date
#print perDayQuantity
modDate = modifyDate(date, i)
productPart._date = modDate
#print "pro ", productPart._date
newPilotInstance = PilotTest(productPart, pilotInstance._name,perDayQuantity)
print "here ",newPilotInstance._product._date._date, ' ',newPilotInstance._product._date._month, ' ', newPilotInstance._units_sold_per_day
#newPilotInstance.setDate(modDate)
listOfPilotInstance.append(newPilotInstance) #note this line.. this is where the trouble is
for k in listOfPilotInstance:
print k._product._date._date
for ele in listOfPilotInstance:
print "there " ,ele._product._date._date, ' ',ele._product._date._month, ' ',ele._units_sold_per_day
return listOfPilotInstance
输出如下
here 30 7 1
30
here 31 7 0
31<--- now this shouldnt be like this.. as I am doing append.. teh first ele shoulnt be overwrited??
31
here 1 8 2
1
1
1
there 1 8 1
there 1 8 0
there 1 8 2
所以我的查询是因为我正在进行追加..为什么日期元素被覆盖? 在我做错的任何线索? 感谢
答案 0 :(得分:2)
您正在使用相同的productpart实例,只是改变它:
productPart._date = modDate
由于所有PilotTest
个对象都引用了同一个productPart
实例,所以所有都会看到突变。
您需要在循环的每次迭代中创建类的新实例,并将此新实例分配给productPart
。
productPart = ...something here...