我有一个类实例的列表。我想在函数调用中修改列表的类变量。在下面的简单示例中,我无法理解为什么列表中的第一项的类变量似乎与第二项相同...
import { HttpClient } from '@angular/common/http';
当前输出:
import numpy as np
import cv2
class laneMark():
winC = np.int32()
winInd = []
def __init__(self, winC, winInd):
self.winC=winC
self.winInd=winInd
def update(self, nb, series):
self.winC=nb
self.winInd=series
#initialisation of the list with '-1' for winC
memLaneMrk= np.ndarray((2),dtype=laneMark)
memLaneMrk[:] = laneMark(-1,[])
# f1 is meant to update the 2 items (class instance) of the list with new values
def f1(laneMarking):
laneMarking[0].update(2,[1,2,3])
laneMarking[1].update(4,[5,6,7])
return laneMarking
memLaneMrk = f1(memLaneMrk)
print ("winC = %d, winInd =%s" %(memLaneMrk[0].winC,memLaneMrk[0].winInd))
print ("winC = %d, winInd =%s" %(memLaneMrk[1].winC,memLaneMrk[1].winInd))
预期输出:
winC = 4, winInd =[5, 6, 7]
winC = 4, winInd =[5, 6, 7]
答案 0 :(得分:0)
在计算机上查看memLaneMrk
:
array([<__main__.laneMark object at 0x1170588d0>,
<__main__.laneMark object at 0x1170588d0>], dtype=object)
这两项指的是同一个对象。
更新:将memLaneMrk[:] = laneMark(-1,[])
替换为memLaneMrk[:] = [laneMark(-1,[]), laneMark(-1,[])]
将解决问题。