2017-02-22 13 views
0

貯蓄口座が500未満の値に変更されないようにする必要があります。コンストラクター残高は500未満の値を受け入れるべきではありません。入金と引き出しの方法は正しく動作しますが、残高が500未満の変数が貯蓄口座にアクセスするのを防ぐ方法を理解できません。Pythonオブジェクト指向の固定口座

class BankAccount(object): 
    def __init__(self): 
     pass 

    def withdraw(self): 
     pass 

    def deposit(self): 
     pass 


class SavingsAccount(BankAccount): 
    def __init__(self, balance=500): 
     self.balance = balance 

    def deposit(self, deposit): 
     if self.deposit > 0: 
      self.balance += deposit 
      return self.balance 
     else: 
      return "Invalid deposit amount" 

    def withdraw(self, withdraw): 
     if self.balance < withdraw: 
      return "Cannot withdraw beyond the current account balance" 
     elif (self.balance - withdraw) < 500: 
      return "Cannot withdraw beyond the minimum account balance" 
     elif withdraw < 0: 
      return "Invalid withdraw amount" 
     else: 
      self.balance -= withdraw 
      return self.balance 


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

    def deposit(self, deposit): 
     if self.deposit > 0: 
      self.balance += deposit 
      return self.balance 
     else: 
      return "Invalid deposit amount" 

    def withdraw(self, withdraw): 
     if withdraw < 0: 
      return "Invalid withdraw amount" 
     elif self.balance < withdraw: 
      return "Cannot withdraw beyond the current account balance" 
     else: 
      self.balance -= withdraw 
      return self.balance 
+0

だから、あなたは新しい 'SavingsAccount(バランス= 499)を作成することは不可能になりたいですか'? 'balance <500:BalanceTooLowError()'をあなたの 'SavingsAccount'' __init__'に追加するのと同じようなものを追加してみませんか? – KernelPanic

+0

@KernelPanicそれは私が欲しいものです.....私はそれを試してみましょう、あなたに戻ってきます – Nix

+0

クール:)答えとして投稿しました – KernelPanic

答えて

0
class SavingsAccount(BankAccount): 
    def __init__(self, balance=500): 
     if balance < 500: 
      raise ValueError("SavingsAccount balance must be at least 500") 
     self.balance = balance 

また、カスタム例外を定義することができます。

class BalanceTooLowError(ValueError): 
    """Raise if attempting to set an account balance to a disallowed value""" 
+0

私はエキスパートではありません。メッセージを返すが、__init__メソッドは何も返さないはずです...私はraiseとerrorsについてもっと読むつもりです。 – Nix

+1

私は感謝します。私はそれについて研究しており、うまくいけば私はより多くの答えを得るでしょう。それをチェックした – Nix

関連する問題