私はrun.pyとconstraints.pyxの2つのファイルを持っています。のL1Penaltyに似た拡張クラスを作成して、constraints.pyxにインスタンス化します。関数内で使用するrun.py私がやった何Pythonファイルへのcython拡張クラスのインポート(位置指定引数
:目で
from lightning.impl.sag_fast cimport Penalty
cdef class ProbaPenalty(Penalty):
def __cinit__(self):
self.support_lagged = False
...
:
constraints.pyxは、拡張クラス、this codeでペナルティクラスのサブクラスが含まれています.py私はProbaPenaltyのインスタンスを作成します:
import pyximport; pyximport.install()
from constraints import ProbaPenalty
pen = ProbaPenalty()
私が持っているエラーは、次のとおりです。
cinit() takes exactly 1 positional argument (0 given)
はケアレスミスはありますか?私はstackoverflowで同様の問題を見つけることができません。
AttributeError: 'custom_constraints.ProbaPenalty' object has no attribute 'b'
:私はビントに取るように私のCINITを変えてみました は、私が今
cdef class ProbaPenalty(Penalty):
def __cinit__(self, bint support_lagged):
self.support_lagged = support_lagged
そして
pen = ProbaPenalty(0)
この時間を利用していることを、このようなsupport_lagged、私はエラーを取得します私はbを呼び出しました、そしてbはどこから来ていますか?
私はProbaPenaltyにdouble bのベクトルを持たせたかったのですが、私はcinit(self、double * b)しましたが、コードを変更してから.cと.soファイルなどを削除しました。現在の.cファイルを調べると、属性bもありません。
同じ問題を抱えてsetup.pyでコンパイルしようとしました。
答えの下にあるOPsコメントに基づいて、私は "もう再生できません"と投票しています。 – DavidW