2010-10-04 8 views
6

Buradaki örnekte, "Augementing .pxd", saf python dosyasını büyütmek için ".pxd" dosyalarını kullanmaya çalışıyorum. (Saf python dosyasına harici tip tanımları ekleyin).Augment saf python dosyalarına cython .pxd dosyalarını kullanma

piton dosyası:

class A(object): 
    def foo(self, i=3, x=None): 
     print "Big" if i > 1000 else "Small" 

pxd dosyası:

cdef class A: 
    cpdef foo(self, int i, x) 

Ben Python "Yok" varsaymak ediyorum bir sözlük, var. Ne yazık ki, cython bunu sevmiyor. Bir tür bildirmek olmadan, benim "saf" piton dosyası kullanmak veya hatası alıyorum pxd dosyasında "dict" olarak türünü bildirirseniz

:

"Signature not compatible with previous declaration"

Ben derlemek olacağını fark olmadığını Varsayılan bir değer belirtmeyin, ancak varsayılanları bildirmek için bir neden var.

Bunun ele alınmasının bir yolu var mı?

cevap

13

cpdef işlevlerindeki isteğe bağlı argümanlar, temel olarak python işlevleri ile aynı olan cdef işlevlerinden farklı olarak bildirilir.

cdef class A: 
    cpdef foo(self, int i=*, x=*) 
+0

teşekkürler şimdi bunun çalışma var olarak

Kişisel .pxd dosyası

yazılacak değiştirilmelidir. Bir sonraki problem pxd dosyasında __init__ metod def ... – monkut