w00*_*00d 14 c python binding class cython
我有一个现有的python类X,我想做以下事情:
from my_python_module import X
cdef class Y:
cdef X test
Run Code Online (Sandbox Code Playgroud)
但这不是开箱即用的,cdef只接受C类型,而不是Python类.任何解决方法?
lbo*_*lla 16
我认为你不能(http://docs.cython.org/src/userguide/sharing_declarations.html#sharing-extension-types)但你可以使用__cinit__断言该属性具有正确的类型:
在您的Cython文件中(例如,名为"p.pyx"):
import my_python_module as q
cdef class Y:
cdef int i
cdef public object x # public so it can be accessed from Python
def __cinit__(self, x_):
assert isinstance(x_, q.X)
self.x = x_
Run Code Online (Sandbox Code Playgroud)
并且my_python_module.py是您定义类X的地方:
class X(object):
def __init__(self):
self.i = 1
Run Code Online (Sandbox Code Playgroud)
然后,你像这样使用它:
import my_python_module as q
import p
y = p.Y(q.X())
print y.x
print y.x.i
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4720 次 |
| 最近记录: |