Bir Python sınıfını .pyx dosyasının içindeki bir uzantı türüne dönüştürdüm. Bu nesneyi diğer Cython modülünde oluşturabilirim, ancak , statik yazmayı onunla yapamaz. İşte Statik yazım için Cython'da paylaşım uzantısı türleri
benim sınıfının bir parçasıdır: Bunu bildirmek için bir .pxd dosyasını kullanarak denedicdef class PatternTree:
cdef public PatternTree previous
cdef public PatternTree next
cdef public PatternTree parent
cdef public list children
cdef public int type
cdef public unicode name
cdef public dict attributes
cdef public list categories
cdef public unicode output
def __init__(self, name, parent=None, nodeType=XML):
# Some code
cpdef int isExpressions(self):
# Some code
cpdef MatchResult isMatch(self, PatternTree other):
# Some code
# More functions...
, ancak "C yöntemi [bazı fonksiyon] beyan edildi, ancak tanımlı değil" tüm diyor benim fonksiyonum Ayrıca, C öğelerini, uygulamamın işlevlerinde, artırılmış bir sınıf gibi davranmasını sağlamak için kullanmayı denedim, ancak bu da işe yaramadı. bu haliyle
İşte benim .pxd geçerli: Yardımlarınız için
cdef class PatternTree:
cdef public PatternTree previous
cdef public PatternTree next
cdef public PatternTree parent
cdef public list children
cdef public int type
cdef public unicode name
cdef public dict attributes
cdef public list categories
cdef public unicode output
# Functions
cpdef int isExpressions(self)
cpdef MatchResult isMatch(self, PatternTree other)
teşekkürler!
Daha karmaşık bir proje dizininiz varsa, her bir klasörde __init__.py olduğundan emin olun. Aksi takdirde, bazı özelliklerin mevcut olmadığı konusunda bir hata alırsınız. – emschorsch