2011-10-04 64 views
3

我有一個A.pxd(只是函數的聲明)和A.pyx,它只包含一個具有所有函數體的類A.cython繼承

比我有,其從A繼承,

和BI有B.pxd一些功能

B.pyx

class Bclass(A): 
    #all the funcions body 

我想現在該怎麼告訴至B .pyx將r作爲類型名稱進行識別?

我要做的就是:

B.pyx

cimport A 
import A 
from A import Aclass 
cdef Bclass(Aclass): 
    #body 

,但它說我:一個是不是一個類型名稱

如果我這樣做,在短短一個file.pyx它的工作原理沒有問題,但使用files.pxd它沒有去。

回答

6

使用

from A cimport Aclass 
cdef class Bclass(Aclass): 
    # ... 

cimport A 
cdef class Bclass(A.Aclass): 
    # ... 

注意Aclass必須cdef「喂類,用Cython extension types無法從Python類繼承。

+0

當我做cimport時,它意味着我正在導入A.pxd,對嗎? –

+0

它給了我沒有更多的錯誤的參數Bclass(A.Aclass),但是當我做一個Btype轉換成Atype它說:不是一個類型標識符。當然,被定義爲A.pxd中的ctypedef結構,我應該專門導入某些東西嗎? –

+0

什麼是castinA?使用' myBclassInstance'代替 –