2016-04-26 63 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++意义上的析构函数。为此目的调用显式对象方法总是更好。