2017-03-13 10 views
0

このエラー:このメソッドの実行中にcancel_agreement() missing 1 required positional argument: 'agreement_id'奇妙なPythonのエラー

が登場:ここ

def force_cancel(self): 
    api = model_from_ref(self.processor.api) 
    api.cancel_agreement(self.subscription_reference) 
    # transaction.cancel_subscription() # runs in the callback 

cancel_agreement()方法である:それを:

def cancel_agreement(self, agreement_id, is_upgrade=False): 
    note = _("Upgrading billing plan") if is_upgrade else _("Canceling a service") 
    r = self.session.post(self.server + '/v1/payments/billing-agreements/%s/cancel' % agreement_id, 
          data='{"note": "%s"}' % note, 
          headers={'content-type': 'application/json'}) 
    if r.status_code != requests.codes.ok: 
     raise RuntimeError(_("Cannot cancel a billing agreement at PayPal. Please contact support.")) 

エラーが発生した理由を私は理解していません2つの引数を持つ関数(apiself.subscription_reference)を呼び出しており、その定義も2つの必須引数です(selfagreement_id)。

悲しいことに、私のビジネスパートナーはオープンソースをリリースしないため、コード全体を表示することはできません。

+0

'cancel_aggrement'は' self'によって呼び出されなければなりません。 'api'ではありません。右? –

+0

'force_cancel'メソッドを所有するクラスと' api'の関係は何ですか? 'type(api)'とは何ですか? –

+0

'cancel_agreement'が存在するclassの' api'インスタンスは存在しますか? – Afaq

答えて

1

それは次のようになります。

def force_cancel(self): 
    klass = model_from_ref(self.processor.api) 
    api = klass() 
    api.cancel_agreement(self.subscription_reference)