我在python中有一个类:
class A:
def __init__(self):
self.obj = None
def setObj(self, npArray):
self.obj = npArray
def getObj(self):
return self.obj
在另一个python脚本中,我实例化A类的一个对象并设置" obj"然后把它带到其他地方
objOfA.setObj(npArray)
''' Some operations '''
objOut = objOfA.getObj()
''' More operations '''
np.append(objOut,[0.25]) ## Here np.append is used just as an example. There can be many other algebraic operations.
''' operations using objOfA '''
在上面使用objOfA的操作中,我想看到修改后的数组(附加0.25)。
在C ++中,使用指针或引用很有可能。但我在python中很难做到这一点。我理解python如何以及何时使用对象的引用。我的问题就在于我
objOut = objOfA.getObj()
我正在获取数组的副本,但没有获得objOut
的引用。
有没有办法可以做到这一点。
提前谢谢你。
答案 0 :(得分:0)
根据文档,np.append
返回一个新数组(强调我的):
arr 的副本,值附加到轴。 请注意,附加不会就地发生:分配并填充新数组。如果 axis 为None, out 是一个展平数组。
因此您必须将返回值分配回对象:
objOut.setObj(np.append(objOut.getObj(), [0.25]))
请注意,在Python中不鼓励使用getter和setter方法,您应该直接访问该对象:
objOut.obj = np.append(objOut.obj, [0.25])
如果你不依赖 numpy 数组,你可以使用可变的列表:
objOut.obj = [1, 2, 3]
objOut.obj.append(0.25)
objOut.obj.extend([4, 5, 6])