我的代码中有以下结构:
#test.pyx
cdef class BClass:
cdef str x
cdef set_args(self, x):
self.x = x
cdef func(self, x):
print "BClass" , self.x, "--", x
fit = BClass()
def my_func():
global fit
fit.set_args("hello")
fit.func("world")
#tester.py
import test
test.my_func()
我将 pyx 构建成 pyd 没有问题,但是当我运行 tester.py 时,出现以下错误:
AttributeError:“test.BClass”对象没有属性“set_args”
如果我在 my_func 中实例化 fit ,则一切都按预期工作。这是否意味着我不能定义模块级对象,然后在同一个模块的函数中重用它?
在我的原始代码中,my_func 在循环中被重复调用,并且由于分配了一些数组,实例化 BClass 会产生一些开销,这就是我想在 my_func 之外实例化 fit 的原因。任何想法如何做到这一点?