6

ここの例「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ファイルを使用するか、pxdファイルでタイプを「dict」として宣言すると、エラーが発生します。

「署名は以前の宣言と互換性がありません」

デフォルト値を指定しないとコンパイルされることに気付きましたが、デフォルト値を宣言するのには理由があります。

これを処理できる方法はありますか?

4

1 に答える 1

14

cpdef 関数のオプションの引数は、本質的に Python 関数と同じである cdef 関数とは異なる方法で宣言されます。

.pxd ファイルは次のように変更する必要があります。

cdef class A:
    cpdef foo(self, int i=*, x=*)
于 2010-10-04T08:17:51.747 に答える