繁体   English   中英

使用Cython定义Python类方法

[英]Defining Python class methods using Cython

我正在尝试将一些Python代码移植到Cython,事实证明,我尝试移植的某些功能需要类方法(在Python代码库中使用@classmethod定义)。

是否可以使用Cython创建Python类方法? 如果是,它们是否会遵循与Python中相同的作用域规则? 我将能够访问在类的实例上定义的cdef方法吗?

它们工作正常,并且行为与Python基本相同。

我将能够访问在类的实例上定义的cdef方法吗?

我不确定您的意思是什么,因为类方法不能在类的实例上进行操作。 他们可以根据需要选择创建一个,在这种情况下, cdef方法可以正常工作:

cdef class C:
    cdef m(self):
        pass

    @classmethod
    def c_meth(cls):
        cdef C x = C()
        x.m()

cdef方法只适用,因为xcdef版到C所以它知道的类型。 如果你只是做了

    @classmethod
    def c_meth(cls):
        x = C()
        x.m()

则由于Cython编译器无法将xcdef class C链接在一起,因此(在运行时)会出现属性错误。 这是一个通用规则,与作为classmethod无关。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM