Cython/python - cdef类列表
我正在尝试改进这段使用列表类型的代码:
# CLASS ORDERC #
################
cdef class OrderC:
cdef int _side
cdef float _px
cdef int _vo
def __cinit__(self, int side, float px, int vo):
# ....
cdef setData(self, double[:] dates):
# ....
# CLASS LISTORDERC #
####################
cdef class ListOrderC:
cdef int _B
cdef list _LO_Bid
cdef double[:] _dates
def __init__(self, num.ndarray[num.double_t, ndim=1] dates):
self._B = 0
self._LO_Bid = []
self._dates = dates
cpdef addOrder(self, OrderC oo):
self._B += 1
self._LO_Bid.append(oo)
self._LO_Bid[-1].setData(self._dates)
当我从Python调用addOrder时,出现了问题:
AttributeError: 'OrderC.OrderC' object has no attribute 'setData'
我猜是因为OrderC被识别为Python对象,所以我必须用cpdef来定义setData。但我希望OrderC被识别为cdef类,以提高性能。
你能帮我吗?
谢谢
1 个回答
1
问题在于,list
只能存放类型为 object
的东西,所以当你去访问的时候,得到的也是一个 object
。
你可能更想用 C++ 的 vector
。