2017-07-17 8 views
1

これは私の銀行口座コードのセクションです。私はOOPを初めて使い、コードに継承を追加しました。私が持っている問題は、それを印刷してください私は関心のない通常のバランスと同じ価値を得て、あなたの洞察力を与えてください。Pythonでの銀行口座への継承と印刷

from random import randint 


class BankAccount(object): 
    def __init__(self, initial_balance=0): 
     self.balance = initial_balance 
    def deposit(self, amount): 
     self.balance += amount 
    def withdraw(self, amount): 
     self.balance -= amount  
    def get_balance(self, initial_balance, rate): 
     return self.get_balance() * self._rate 

class BankAccountWithInterest(BankAccount): 
    def __init__(self, initial_balance=0, rate=0.1): 
    BankAccount.__init__(self, initial_balance) 
    self._rate = rate   
    def interest(self): 
    return self.balance * self._rate 


balance = (randint(100, 500)) 
my_account = BankAccount(balance) 
my_interest = BankAccountWithInterest(balance) 
print(my_account.balance) 
print(my_interest.balance) 
+4

あなたは金利メソッドを呼び出していません。あなたがそのメソッドを呼び出さない場合は、自分の興味のある値をあなたの残高に適用することは決してありません。 –

+0

あなたの問題とは無関係ですが、OOPの初心者ですから、 'BankAccountWithInterest'と相続が不要であることをお勧めします。 'BankAccount'に金利計算メソッドを持たせ、利子が適用されない口座については' 0'を渡してください。 – niksofteng

+0

私が特にやっているプロジェクトは継承を求めていますが、うまく動作するように管理しています –

答えて

0
print(my_interest.balance + my_interest.interest()) 

あなたが期待するものを返すように思われます。

my_interest.balance = my_interest.balance + my_interest.interest() 
print(my_interest.balance) 

追加された金額で残高を更新します。

0

ここではいくつかの問題があります。主なものは、関心関数を適用(呼び出し)しないということです。そのため、両方で同じバランスが得られます。あなたが行う必要があります。

print(my_account.balance) 
print(my_interest.balance + my_interest.interest()) 

を私はまた、あなたがget_balanceを呼び出し、それがself._rateにアクセスしようとすると、そうでない場合にエラーが出て、get_balance方法でrateself._rateを変更することをお勧めします。また、self.balanceまたはself.balance + rateを返す必要があります。そうでないと、無限ループが発生します。

関連する問題