按照此处的示例“Augementing .pxd”,我正在尝试使用“.pxd”文件来扩充纯python文件。 (在纯python文件外部添加类型定义)。
python文件:
class A(object):
def foo(self, i=3, x=None):
print "Big" if i > 1000 else "Small"
pxd file:
cdef class A:
cpdef foo(self, int i, x)
我有一本字典,我在python中默认为“无”。 不幸的是,cython不喜欢这个。
如果我使用我的“纯”python文件,而没有在pxd文件中声明类型或将类型声明为“dict”,则会收到错误:
“签名与之前的声明不兼容”
我注意到如果我没有指定默认值,它会编译,但是有理由声明默认值。
有没有办法解决这个问题?
答案 0 :(得分:13)
cpdef函数中的可选参数与cdef函数的声明方式不同,cdef函数与python函数基本相同。
您的.pxd文件应修改为
cdef class A:
cpdef foo(self, int i=*, x=*)