私のコードには次の構造があります。
#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内でフィットをインスタンス化すると、すべて期待どおりに機能します。これは、モジュールレベルのオブジェクトを定義して、同じモジュール内の関数で再利用できないことを意味しますか?
私の元のコードでは、my_funcがループで繰り返し呼び出され、BClassのインスタンス化には、いくつかの配列を割り当てるためにオーバーヘッドがあります。そのため、my_funcの外部でフィットをインスタンス化する必要があります。これを行う方法について何か考えはありますか?