2016-07-01 3 views
-1

継承の例を実行しようとしていて、なぜ出力が正しくないのかわかりません。以下はコードです。Python継承 - 何が間違っているのですか?

class BankAccount(): 
    def __init__(self): 
     self.balance=0 

    def deposit(self,amount): 
     self.balance += amount 
     print(self.balance) 

    def withdraw(self,amount): 
     self.balance -= amount 
     print(self.balance) 


class MinimumBalance(BankAccount): 
    def __init__(self,min_bal): 
     BankAccount.__init__(self) 
     self.min_balance=min_bal 

    def withdraw(self,amount): 

     if self.balance - amount < self.min_balance: 
      print("Balance is LOW") 
     else: 
      BankAccount.withdraw(self,amount) 

a=BankAccount() 
b=MinimumBalance(50) 
a.deposit(100) 
b.withdraw(40) 

出力は次のとおりです。

100 
Balance is LOW 
+3

代わりにどのような出力を期待しましたか? –

+0

間違ったインスタンスに保存しています。 a = BankAccount() b.deposit(100) b.withdraw(40) – arshpreet

+0

私はあなたが考えることを継承しないと思います。 'a = BankAccount(); b = MinimumBalance(50) 'は* 2つの*オブジェクトを作成します。 'a'は' BankAccount'型で、 'MinimumBalance'型の' b'型です。 'a'への入金は' a'の内部状態を変更するだけで、 'BankAccount'クラスの変更ではなく、確かに' MinimumBalance'のインスタンスの変更ではありません。 – MisterMiyagi

答えて

3

あなたMinimumBalance(50)インスタンスが0のバランスaオブジェクトが独立しているがあり、それは別のインスタンスである、エントリが持っているもののバランスという問題ではありません。 MinimumBalance()クラスはBalanceという機能を備えていますが、いくつかの調整がありますので、bインスタンスとのやりとりをするだけです。

預金代わりbのバランス:

b = MinimumBalance(50) 
b.deposit(100) 
b.withdraw(40) 
0

あなたの継承の建設が正しいとは、しかし、あなたは、2つのオブジェクトを作ってきました。 MinimumBalanceは今でもBankAccountですが、引き出し機能は異なります。代わりにBankAccountWithMinimumBalanceと呼ぶべきです。次に、2つのオブジェクトを作成する代わりに、BankAccountWithMinimumBalanceを作成して使用します。

関連する問題