我遇到了類級別的變量問題。我正在努力想象我能用班級做的所有事情。我決定創建一個銀行賬戶類,最終創建子類,但是我試圖創建獨特的銀行賬戶。類級別變量python
class BankAccount(object):
"""Creates Bank Account and Functions"""
account_names = []
### Bank Account
import random
class BankAccount(object):
"""Creates Bank Account and Functions"""
account_names = []
def __init__(self, name, balance = 0):
try: # because account_name doesn't exit until the first instnace
for people in account_names: #iterate account names
if people == name: #check if name is in class_var
print "Name already exists!"
break #end instantiation
else: # its a unque name add to the class and object
self.name = name
self.account_names.append(self.name)
except: #First intantition
self.name = name
self.account_names.append(self.name)
self.balance = float(balance)
如果我可以驗證獨特self.account
數據比我能實現銀行賬戶持有人之間的支付機制。不過,我可以想出辦法做到這一點。我認爲一流水平瓦爾會做的伎倆,但我出來說就是:
['Bernie', 'Jerry']
['Bernie', 'Jerry']
['Bernie', 'Jerry', 'Jerry']
這意味着它只是追加,因此發生異常(正確嗎?)爲什麼我還得到一個異常變量退出,因爲它是被追加到。
這裏是將gist
你的變量正是你所說的:一個類級變量。它屬於類,而不屬於類的一個實例。 'self.account_names'實際上是'BankAccount.account_names',所以'BankAccount'的所有實例共享完全相同的'account_names'列表。在'__init__'方法中創建你的列表,它將成爲一個實例變量。 – Blender 2014-10-01 01:21:13
如何在類中調用它:__class__。或cls。而不是自我? – Grouchy 2014-10-01 02:10:56
你不希望它成爲類的一部分,所以把'self.account_names = []'放在'__init__'方法的頂部。 – Blender 2014-10-01 02:55:22