Cython .pxdファイルを使用して、純粋なPythonファイルを拡張します

StackOverflow https://stackoverflow.com/questions/3852742

  •  27-09-2019
  •  | 
  •  

質問

ここで例に従ってください、」AUSEMENTING .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」として宣言したりすると、エラーが表示されます。

「以前の宣言と互換性がない署名」

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

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

役に立ちましたか?

解決

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

あなたの.pxdファイルは、次のように記述するように変更する必要があります

cdef class A:
    cpdef foo(self, int i=*, x=*)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top