【问题标题】:Using cython .pxd files to Augment pure python files使用 cython .pxd 文件来扩充纯 python 文件
【发布时间】:2010-10-04 03:56:39
【问题描述】:

按照此处的示例“Augementing .pxd”,我正在尝试使用“.pxd”文件来扩充纯 Python 文件。 (在纯 python 文件之外添加类型定义)。

python 文件:

class A(object):
    def foo(self, i=3, x=None):
        print "Big" if i > 1000 else "Small"

pxd 文件:

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

我有一本字典,我在 python 中默认为“无”。 不幸的是,cython 不喜欢这样。

如果我使用我的“纯”python 文件,而不在 pxd 文件中声明类型或将类型声明为“dict”,我会收到错误:

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

我注意到如果我不指定默认值,它将编译,但声明默认值是有原因的。

有什么办法可以处理吗?

【问题讨论】:

    标签: python cython


    【解决方案1】:

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

    你的 .pxd 文件应该被修改为写成

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

    【讨论】:

    • 谢谢,我已经搞定了。下一个问题是pxd文件中的init方法def...
    猜你喜欢
    • 2014-07-10
    • 1970-01-01
    • 2021-02-28
    • 2020-04-20
    • 2018-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多