[英]Missing 2 required positional arguments - Classmethod Python
對不起,我在這方面掙扎了很長一段時間。 我正在嘗試使用函數 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
編輯:非常感謝您的 hekp,我應該修改我的 defmonthlyPayment 函數以接收參數
您正在從實例 ( 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)
你得到的堆棧錯誤是:
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 個參數(不包括 self),第 4 個參數是可選的。
def monthlyPayment(cls,face,rate,term,period=None):
但是當您從totalPayments
方法調用它時,您只傳遞一個參數,即 self.
return (self.monthlyPayment(self) * self._term)
你不需要傳遞 self,它會自動傳遞,所以你需要傳遞其他 3 個預期的參數face,rate,term
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.