对不起,我在这个问题上挣扎了很长时间。我尝试使用函数totalPayments,它使用monthlyPayment类函数,参数在初始化阶段传递。我得到一个错误,缺少2个必需的位置参数
class Loan(object):
def __init__(self, asset, face, rate , term):
self._asset = asset
self._face = face
self._rate = rate
self._term = term
@classmethod
def monthlyPayment(cls,face,rate,term,period=None):
return ((rate*face*((1+rate)**term)))/(((1+rate)**term)-1)
def totalPayments(self):
return (self.monthlyPayment(self) * self._term)
l = Loan(None,1000,0.025,10)
print(l.totalPayments()) # gets an error missing 2 required positional arguments
您正在从实例(}提供参数。在
self
)调用monthlyPayment
,并且没有为face
、rate
和{它也不应该是类方法,因为您使用实例的属性:
您得到的堆栈错误是:
这里的线索是
monthlyPayment()
方法给出了缺少2个参数的错误。此方法需要传递3个参数(不包括self),第4个参数是可选的。在def monthlyPayment(cls,face,rate,term,period=None):
但是当你从你的
totalPayments
方法调用它时,你只传递了一个参数self。在return (self.monthlyPayment(self) * self._term)
您不需要传递self,它将自动传递,因此您需要传递其他3个预期的参数
face,rate,term
相关问题 更多 >
编程相关推荐