Использование файлов .pxd для дополнения чистых файлов на Python - PullRequest
6 голосов
/ 04 октября 2010

Следуя приведенному здесь примеру " Augementing .pxd ", я пытаюсь использовать файлы ".pxd" для дополнения чистого файла Python.(Добавьте определения типов, внешние по отношению к чистому файлу Python).

Файл Python:

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

Файл pxd:

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

У меня есть словарь, которыйЯ по умолчанию "Нет" в Python.К сожалению, cython это не нравится.

Если я использую свой «чистый» файл python, без объявления типа или объявления типа «dict» в файле pxd, я получаю сообщение об ошибке:

«Подпись не совместима с предыдущим объявлением»

Я заметил, что он будет компилироваться, если я НЕ укажу значение по умолчанию, но есть причина для объявленияпо умолчанию.

Есть ли способ, которым это может быть обработано?

1 Ответ

13 голосов
/ 04 октября 2010

Необязательные аргументы в функциях cpdef объявляются не так, как функции cdef, что по сути совпадает с функциями python.

Ваш файл .pxd должен быть изменен для записи в виде

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