我有以下 test.pyx
cdef public class Foo[object Foo, type FooType]:
cdef public char* foo(self):
r = "Foo"
return r
Run Code Online (Sandbox Code Playgroud)
cython 将该代码编译为 test.h 和 test.c,一切看起来都很好,但我不知道如何从 C 代码创建Foo对象。
即使我使用 Cython 函数创建它:
cdef public Foo create_Foo():
return Foo()
Run Code Online (Sandbox Code Playgroud)
我不知道如何调用foo方法。
谢谢。
我在 Cython 用户组中得到的答案:
方法可能应该禁止使用 public,因为直接调用函数会破坏子类化。如果需要从 C 调用该方法,请为每个将对象作为额外参数的方法编写一个包装函数,然后调用该方法。例如
cdef char *foo_wrapper(Foo obj):
return obj.foo()
Run Code Online (Sandbox Code Playgroud)
如果你有很多方法会很不方便,所以如果你一开始就能控制 Foo 的设计,就不要使用方法,而是使用函数。
| 归档时间: |
|
| 查看次数: |
2020 次 |
| 最近记录: |