Sam*_*ukh 2 python cython pyrex
我正在尝试将一些 Python 代码移植到 Cython,结果证明我尝试移植的某些功能需要类方法(@classmethod在 Python 代码库中定义)。
是否可以使用 Cython 创建 Python 类方法?如果是,它们是否会遵循与 Python 中相同的作用域规则?我是否能够访问cdef在类的实例上定义的方法?
它们工作正常,行为方式与 Python 基本相同。
我是否能够访问在类的实例上定义的 cdef 方法?
我不是 100% 确定你的意思,因为类方法不对类的实例进行操作。他们可以根据需要选择创建一个,在这种情况下,cdef方法可以正常工作:
cdef class C:
cdef m(self):
pass
@classmethod
def c_meth(cls):
cdef C x = C()
x.m()
Run Code Online (Sandbox Code Playgroud)
该cdef方法之所以有效,x是因为被cdef编辑了C所以它知道类型。如果你刚刚
@classmethod
def c_meth(cls):
x = C()
x.m()
Run Code Online (Sandbox Code Playgroud)
那么你会得到一个属性错误(在运行时),因为 Cython 编译器不会x与cdef class C. 这是一般规则,与它是classmethod.
| 归档时间: |
|
| 查看次数: |
1731 次 |
| 最近记录: |