使用cython .pxd文件来增强纯python文件

时间:2010-10-04 03:56:39

标签: python cython

按照此处的示例“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”,则会收到错误:

  

“签名与之前的声明不兼容”

我注意到如果我没有指定默认值,它会编译,但是有理由声明默认值。

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:13)

cpdef函数中的可选参数与cdef函数的声明方式不同,cdef函数与python函数基本相同。

您的.pxd文件应修改为

cdef class A:
    cpdef foo(self, int i=*, x=*)