他们有没有办法在不牺牲CDEF呼叫者中的CDEF的情况下让这一切正常工作?(也不使用cpdef)
from array import *
from numpy import *
cdef class Agents:
cdef public caller(self):
print "caller"
A[1].called()
cdef called(self):
print "called"
A = [Agents() for i in range(2)]
def main():
A[0].caller()
最佳答案
对于Cython,[1]将是一个python对象如果希望仍能使用cdef,请在呼叫者中使用自动转换:
cdef public caller(self):
cdef Agents agent
print "caller"
agent = A[1]
agent.called()
您可以在cython中使用-a模式来检查是否对每行代码使用了python或c。(cython-a yourfile.pyx->将生成一个yourfile.html,您可以浏览和检查)。