2016-04-26 17 views
0

私は、次のコードを持っている:クラス変数(カウンタ)をインクリメント得ていない - Pythonの

class Account(object): 

    counter=0 

    def __init__(self, holder, number, balance,credit_line=1500): 
     self.Holder = holder 
     self.Number = number 
     self.Balance = balance 
     self.CreditLine = credit_line 

    def __del__(self): 
     Account.counter -= 1 

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

    def deposit(self, amount): 
     self.Balance = amount 

    def withdraw(self, amount): 
     if(self.Balance - amount < -self.CreditLine): 
      # coverage insufficient 
      return False 
     else: 
      self.Balance -= amount 
      return True 

    def balance(self): 
     return self.Balance 

a1 = Account("abc", 2, 2325.21) 

print(Account.counter) 

出力が示す0をただし、私はそれが初期化されてように、1つのオブジェクトので、1として示さなければならないと思います。なぜ0を表示し、解決するのか?

答えて

0

counterオブジェクトを初期化するときに増加されません。

用途:また

def __init__(self, holder, number, balance,credit_line=1500): 
    ... 
    Account.counter+=1 

はデストラクタ__del__はガルベコレクションから呼び出され、この問題が発生したとき、あなたは本当に予測することができませんでした。だから、C++の意味でのデストラクタではありません。この目的のために明示的なオブジェクトメソッドを呼び出す方が常に良いです。

関連する問題