2016-04-26 81 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,因爲一個對象作爲被初始化。爲什麼它顯示0,以及如何解決?

回答

0

counter在初始化對象時沒有增加。

用途:

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

而且析構函數__del__將從GARBE收集被調用,你真的無法預測何時發生這種情況。所以它不是C++意義上的析構函數。爲此目的調用顯式對象方法總是更好。