def Update(self, wm, vm, ts, pos, vn, att):
# 上一时刻位置,速度
pos_pre = pos
self.pos = pos
vn_pre = vn
self.vn = vn
# vn更新
self.vn = self.vn + self.delta_vn
# pos更新
self.pos[0, 0], self.pos[1, 0] = Q2Pos(self.qne)
self.pos[2, 0] = self.pos[2, 0] - mid_vn[2, 0] * ts
原因:在开辟空间时,同时将pos_pre和self.pos指向pos,将vn_pre和self.vn指向vn,但在修改vn时,是重建数组,即重新创建了一个数据空间,但在修改pos时,是在原数组空间进行修改。
In [2]: a = [1,2,3]
In [3]: def test(a):
...: c = a
...: d = a
...: d = [2,3,4]
...: return c
...:
In [4]: test(a)
Out[4]: [1, 2, 3]
In [6]: def test2(a):
...: c = a
...: d = a
...: d[0] = 5
...: return c
...:
In [7]: test2(a)
Out[7]: [5, 2, 3]
In [1]: import copy
In [2]: a = [1,2,3]
In [3]: def test3(a):
...: c = copy.deepcopy(a)
...: d = copy.deepcopy(a)
...: d[0] = 5
...: return c
...:
In [4]: test3(a)
Out[4]: [1, 2, 3]