cdef类的Cython/python列表

2024-04-24 03:19:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图改进这个使用列表类型的代码:

# 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时,问题就出现了:

^{pr2}$

我想这是因为OrderC被识别为python对象,所以我必须用cpdef定义setData。但是我希望OrderC被识别为cdef类来提高性能。在

你能帮帮我吗?在

谢谢


Tags: selflofloatsideclassintdatesdouble
1条回答
网友
1楼 · 发布于 2024-04-24 03:19:30

问题是list只保存object类型的内容,所以当您访问时,您会得到一个object。在

你可能想使用C++ ^ {< CD4}}。在

相关问题 更多 >