2016-09-17 7 views
-2
class Account(object): 
    def __init__(self,holder, number, balance, credit_line = 1500): 
     self.holder = holder 
     self.number = number 
     self.balance = balance 
     self.credit_line = credit_line 

    def deposit(self, amount): 
     self.balance = amount 
    def withdraw(self, amount): 
     if(self.balance - amount < -self.credit_line): 
      return False 
     else: 
      self.balance -= amount 
      return True 

    def balance(self): 
     return self.balance 
    def holder(self): 
     return self.holder 

    def transfer(self, target, amount): 
     if(self.balance - amount < -self.credit_line): 
      #coverage insufficient 
      return False 
     else: 
      self.balance -= amount 
      target.balance += amount 
      return True 
Guido = Account("Guido", 10 ,1000.50) 
Guido.balance() 
------------------------------------------------------------------------- 


Traceback (most recent call last): 
    File "Account.py", line 31, in <module> 
    Guido.balance() 
TypeError: 'float' object is not callable 
+0

'balance.php = amount'が' balance'関数を上書きします –

+0

他の答えで問題が説明されていますが、 'balance'や' holder'メソッドのような「アクセサ」は一般的にPythonでは必要ありません。外部コードで属性にアクセスすることができます(この場合は同じ名前で問題につながります)。あとで値に特別な処理(例えば、小数点以下の桁数を四捨五入)を行う必要がある場合は、属性の検索を関数呼び出しに変えるために 'property'を使うことができます。 – Blckknght

答えて

1

__init__メソッドでは、メソッドbalanceをオーバーライドしています。フィールド名を_balanceに変更するか、balanceメソッドを削除してGuido.balanceを使用してください。

また...............すぐにありがとう

0
class Account(object): 
    def __init__(self,holder, number, balance, credit_line = 1500): 
     self.holder = holder 
     self.number = number 
     self.balance = balance 
     self.credit_line = credit_line 

    def deposit(self, amount): 
     self.balance = amount 
    def withdraw(self, amount): 
     if amount > self.balance: 
      print "Amount greater than available balance" 

     else: 
      self.balance -= amount 
      return True 

    def bala_nce(self): 
     return self.balance 
    def hold_er(self): 
     return self.holder 
    def num(self): 

     return self.number 


    def transfer(self, target, amount): 
     if(self.balance - amount < -self.credit_line): 
      #coverage insufficient 
      return False 
     else: 
      self.balance -= amount 
      target.balance += amount 
      return True 

guido = Account("Guido", 10 ,10000.100) 
guido.withdraw(2300.100) 

print "Account name: " ,guido.hold_er() 
print "available balance: $",guido.bala_nce() 

あなたは小文字(すなわちguido = Account(...)、ないGuido)で始まるあなたの変数に名前を付ける必要があることに注意その作業は

関連する問題