所以我正在尝试创建一个程序,其中包含一个名为" Loan"它计算带有数据字段的汽车的每月付款和总付款。我猜测我的错误是由方法中的方法(getMonthlyPayment())引起的(getTotalPayment)。如何在方法中放置方法?或者我的问题有另一种解决方案吗?
谢谢!
我的错误是:
Traceback (most recent call last): File "C:\Users\ericl_000\Desktop\Python\HW 5 ( Python ).py", line 38, in <module> main() File "C:\Users\ericl_000\Desktop\Python\HW 5 ( Python ).py", line 37, in main print("The total payment is ", loan.getTotalPayment()) File "C:\Users\ericl_000\Desktop\Python\HW 5 ( Python ).py", line 27, in getTotalPayment return getMonthlyPayment * self.__NumYearsLoans * 12 NameError: name 'getMonthlyPayment' is not defined >>>
class Loan:
def __init__(self, AnnIntRate = 1.0, NumYearsLoans = 1.0, LoanAmt = 1.0, BoName = " "):
self.__AnnIntRate = AnnIntRate
self.__NumYearsLoans = NumYearsLoans
self.__LoanAmt = LoanAmt
self.__BoName = BoName
def getAnnIntRate(self):
return self.__AnnIntRate
def getNumYearsLoans(self):
return self.__NumYearsLoans
def getLoanAmt(self):
return self.__LoanAmt
def getBoName(self):
return self.__BoName
def setAnnIntRate(self,AnnIntRate):
self.__AnnIntRate = AnnIntRate
def setNumYearsLoans(self,NumYearsLoans):
self.__NumYearsLoans = NumYearsLoans
def setLoanAmt(self,LoanAmt):
self.__LoanAmt = LoanAmt
def setBoName(self,BoName):
self.__BoName = BoName
def getMonthlyPayment(self):
monthlyIntRate = self.__AnnIntRate / 1200
return self.__LoanAmt * monthlyIntRate / ( 1 - ( 1 / ( 1 + monthlyIntRate) ** ( self.__NumYearsLoans * 12 )))
def getTotalPayment(self):
return getMonthlyPayment() * self.__NumYearsLoans * 12
def main():
YearlyIntRate = float(input("Enter yearly interest rate, for example, 7.25: "))
NumOfYears = float(input("Enter number of years as an integer: "))
LoanAmount = float(input("Enter loan amount, for example, 120000.95: "))
BorrowerName = input("Enter a borrow's name: ")
loan = Loan(YearlyIntRate,NumOfYears,LoanAmount,BorrowerName)
print("The loan is for ", loan.getBoName())
print("The monthly payment is ", loan.getMonthlyPayment())
print("The total payment is ", loan.getTotalPayment())
main()
答案 0 :(得分:0)
就像访问成员一样,您需要使用self.
预先对方法进行所有访问。
将getTotalPayment()
更改为
return self.getMonthlyPayment() * self.__NumYearsLoans * 12
另外,看看property
,让吸气剂和制定者不那么痛苦。但是,大多数情况下,您甚至不应该在Python中定义getter和setter。在惯用Python中,私密性通常不被视为一个概念。