我有:
cdef class BaseClass():
def __cinit__(self,char* name):
print "BaseClass __cinit__()"
#...
def __dealloc__():
print "BaseClass __dealloc__()"
#...
cdef class DerClass(BaseClass):
def __cinit__(self,char* name,int n):
print "DerClass __cinit__()"
#...
def __dealloc__():
print "DerClass __dealloc__()"
#...
Run Code Online (Sandbox Code Playgroud)
当我在cyhton中调用DerClass时,会自动调用BaseClass的construcor,它必须打印的是:
BaseClass __cinit__()
DerClass __cinit__()
DerClass __dealloc__()
BaseClass __dealloc__()
Run Code Online (Sandbox Code Playgroud)
但事实并非如此,我称之为DerClass('Ciao').为什么发生,所以,我怎么能避免调用CINIT的BaseClass的.谢谢!
我想包装这个简单的函数:
double foo(int a, int* b)
{
double div = ((double) a) / ((double) *b);
*b = a + (*b);
return div;
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是这样的:
cdef pyfoo(int c, int d):
res = foo(c, &d);
return (res, d)
Run Code Online (Sandbox Code Playgroud)
我想返回一个值列表,但是使用cdef它不起作用它给了我erroe:AttributeError没有属性pyfoo如果不使用cdef我使用def或cpdef它可以工作.
使用cdef在cython中有一些方法吗?