我正在为新的python Type编写C扩展。这种新类型的一个属性是Numpy数组,它来自传递给C扩展的外部数据。我像这样定义属性数组:
array = PyArray_SimpleNewFromData(numDims,shape,NPY_DOUBLE,[DATA POINTER])
,[DATA POINTER]是外部数据在内存中的位置。
然后我使用此命令设置数组属性" base"到包含属性的类型对象:
PyArray_SetBaseObject((PyArrayObject*)array,(PyObject*)[PY_TYPE OBJECT])
现在,据我所知,当我导入我的模块时,"键入" object.array
的{{1}}。{/ p>
当我采用正常的ndarray并执行以下命令时,我会看到后续的行为:
numpy.ndarray
我希望我的数组属性增加和减少其基数的引用计数,就像>>>import numpy as np
>>>import sys
>>>base = np.array([1,2,3,4,5])
>>>sys.getrefcount(base)
2
>>>newArr = base
>>>sys.getrefcount(base)
3
>>>del newArr
>>>sys.getrefcount(base)
2
增加然后递减newArr
的引用计数一样。但是,我的模块的行为如下:
base
有谁知道如何使用我的>>>from myModule import myObj
>>>import sys
>>>base = myObj()
>>>sys.getrefcount(base)
2
>>>newArr = base.array
>>>sys.getrefcount(base)
2
>>>del newArr
>>>sys.getrefcount(base)
2
属性来改变我的基类型对象的引用计数?我最初的想法是使用这种numpy ndarray行为,但我愿意接受评论和建议!