2010-10-04 22 views
6

Theo ví dụ tại đây, "Augementing .pxd", tôi đang cố sử dụng tệp ".pxd" để tăng thêm tệp python thuần túy. (Thêm định nghĩa kiểu bên ngoài vào tệp python thuần túy).Sử dụng tệp .thond để chuyển các tệp python tinh khiết

python file:

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

pxd file:

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

Tôi đã có một cuốn từ điển, mà tôi đang mặc định cho "Không" trong python. Thật không may, cython không thích điều này.

Nếu tôi sử dụng "tinh khiết" file python tôi, mà không tuyên bố một loại hoặc khai báo kiểu như "dict" trong tập tin pxd tôi nhận được lỗi:

"Signature not compatible with previous declaration"

tôi nhận thấy rằng nó sẽ biên dịch nếu tôi KHÔNG chỉ định một giá trị mặc định, nhưng có một lý do để khai báo các giá trị mặc định.

Có cách nào để xử lý không?

Trả lời

13

Đối số tùy chọn trong các hàm cpdef được khai báo khác với các hàm cdef cơ bản giống với hàm python.

tập tin .pxd của bạn nên được sửa đổi để được viết như

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

Cảm ơn bây giờ tôi đã làm việc đó. Vấn đề tiếp theo là phương thức __init__ def trong tệp pxd ... – monkut

Các vấn đề liên quan