缺少2个必需的位置参数-Classmethod Python

时间:2019-12-14 11:58:18

标签: python python-3.x class-method

对不起,我为此苦了很长时间。我正在尝试使用totalToPayments函数,该函数在初始化阶段使用带有参数传递的monthlyPayment类函数。我遇到一个错误,缺少2个必需的位置参数

minimize

2 个答案:

答案 0 :(得分:2)

您正在从实例(monthlyPayment)调用self,而没有为facerateterm提供参数。 / p>

它也不应该是类方法,因为您使用了实例的属性:

class Loan(object):
   def __init__(self, asset, face, rate , term):
       self._asset = asset
       self._face = face
       self._rate = rate
       self._term = term

   def monthlyPayment(self, period=None):
       return ((self._rate*self._face*((1+self._rate)**self._term)))/(((1+self._rate)**self._term)-1)

   def totalPayments(self):
       return (self.monthlyPayment() * self._term)

答案 1 :(得分:1)

您得到的堆栈错误是:

Traceback (most recent call last):
  File "C:/Users/cd00119621/PycharmProjects/ideas/stackoverflow.py", line 16, in <module>
    print(l.totalPayments())
  File "C:/Users/cd00119621/PycharmProjects/ideas/stackoverflow.py", line 13, in totalPayments
    return (self.monthlyPayment(self) * self._term)
TypeError: monthlyPayment() missing 2 required positional arguments: 'rate' and 'term'

这里的线索是它的monthlyPayment()方法提供了缺少2个参数的错误。此方法期望将3个args(不包括self)传递给它,第4个是可选的。

def monthlyPayment(cls,face,rate,term,period=None):

,但是当您从totalPayments方法中调用此方法时,只能传递一个参数self。

return (self.monthlyPayment(self) * self._term)

您不需要传递自我,它将自动传递,因此您需要传递其他3个预期参数face,rate,term