2016-05-10 1 views
-1

私は、ローンと呼ばれるクラスを持つプログラムを作成しようとしています。これは、毎月の支払いとデータフィールドを持つ自動車の合計支払いを計算します。私のエラーは、メソッド(getMonthlyPayment())をメソッド(getTotalPayment)に持つことによって発生していると推測しています。どのようにメソッドをメソッドの中に入れますか?または、私の問題の別の解決策がありますか?Pythonクラス - メソッド

ありがとうございます!
私のエラーは、次のとおりです。

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

PythonでBeanスタイルのゲッターとセッター?ホラー!また、インスタンスメソッドにアクセスする前に、 'self.'が不足しています。 Pythonは明示的です。 – Kupiakos

+0

ありがとう@Kupiakos! :)私は決議として置くことができるように答えに投稿してください – TheEWL

答えて

0

だけのメンバーにアクセスするように、あなたはすべてをself.とメソッドにアクセスする前に付加する必要があります。また

return self.getMonthlyPayment() * self.__NumYearsLoans * 12 

変更getTotalPayment()、ゲッターとセッターは苦痛が少ない作るためにpropertyを見てみましょう。しかし、ほとんどの場合、Pythonでgetterとsetterを定義することすらすべきではありません。私的性は通常、慣用句Pythonの概念として扱われません。

関連する問題