缺少 2 个必需的位置参数 - 类方法 Python
Missing 2 required positional arguments - Classmethod Python
抱歉,我为此苦苦挣扎了一段时间。我正在尝试使用函数 totalPayments,它使用 monthlyPayment class 函数,参数在初始化阶段传递。我收到一个错误,缺少 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
编辑:
非常感谢您的 hekp,我应该修改我的 def monthlyPayment 函数以接受参数
您得到的堆栈错误是:
Traceback (most recent call last):
File "C:/Users/cd00119621/PycharmProjects/ideas/Whosebug.py", line 16, in <module>
print(l.totalPayments())
File "C:/Users/cd00119621/PycharmProjects/ideas/Whosebug.py", line 13, in totalPayments
return (self.monthlyPayment(self) * self._term)
TypeError: monthlyPayment() missing 2 required positional arguments: 'rate' and 'term'
这里的线索是 monthlyPayment()
方法给出了缺少 2 个参数的错误。此方法需要传递给它的 3 个参数(不包括自身),第 4 个是可选的。
def monthlyPayment(cls,face,rate,term,period=None):
但是当您从 totalPayments
方法中调用它时,您只传递一个参数,即 self。
return (self.monthlyPayment(self) * self._term)
你不需要传递self,它会自动传递,所以你需要传递其他3个预期参数face,rate,term
您正在从实例 (self
) 调用 monthlyPayment
,并且您没有为 face
、rate
和 term
提供参数.
它也不应该是类方法,因为您使用了实例的属性:
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)
抱歉,我为此苦苦挣扎了一段时间。我正在尝试使用函数 totalPayments,它使用 monthlyPayment class 函数,参数在初始化阶段传递。我收到一个错误,缺少 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
编辑: 非常感谢您的 hekp,我应该修改我的 def monthlyPayment 函数以接受参数
您得到的堆栈错误是:
Traceback (most recent call last):
File "C:/Users/cd00119621/PycharmProjects/ideas/Whosebug.py", line 16, in <module>
print(l.totalPayments())
File "C:/Users/cd00119621/PycharmProjects/ideas/Whosebug.py", line 13, in totalPayments
return (self.monthlyPayment(self) * self._term)
TypeError: monthlyPayment() missing 2 required positional arguments: 'rate' and 'term'
这里的线索是 monthlyPayment()
方法给出了缺少 2 个参数的错误。此方法需要传递给它的 3 个参数(不包括自身),第 4 个是可选的。
def monthlyPayment(cls,face,rate,term,period=None):
但是当您从 totalPayments
方法中调用它时,您只传递一个参数,即 self。
return (self.monthlyPayment(self) * self._term)
你不需要传递self,它会自动传递,所以你需要传递其他3个预期参数face,rate,term
您正在从实例 (self
) 调用 monthlyPayment
,并且您没有为 face
、rate
和 term
提供参数.
它也不应该是类方法,因为您使用了实例的属性:
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)