我正在閱讀Python Essential Reference 4th ed。我無法弄清楚如何在下面的代碼解決問題如何繼承__del__函數
class Account(object):
num_accounts = 0
def __init__(self, name, balance):
self.name = name
self.balance = balance
Account.num_accounts += 1
def __del__(self):
Account.num_accounts -= 1
def deposit(self, amt):
self.balance += amt
def withdraw(self, amt):
self.balance -= amt
def inquire(self):
return self.balance
class EvilAccount(Account):
def inquire(self):
if random.randint(0,4) == 1:
return self.balance * 1.1
else:
return self.balance
ea = EvilAccount('Joe',400)
如果我理解正確的話,EA對象超出範圍的程序結束和繼承__del__
功能應該被調用,正確的,當?我在__del__
中收到'NoneType' object has no attribute num_accounts
。爲什麼在__init__
函數中沒有提前投訴?
我正在學習python,所以我不知道我是否應該在程序中包含__del__ ...我猜這個函數對你沒有用處?如果沒有類變量,你會如何計算一個類的instatiated對象? – Kokas 2013-05-03 07:39:26
另外,即使ea是垃圾收集器,也不存在對象......爲什麼我不能使用類名來訪問它的一個變量?這在Python中不可能嗎? – Kokas 2013-05-03 07:40:47
@Kokas:這是記錄,比較我的答案。 – 2013-05-03 07:41:45