У меня возникают проблемы с переменными уровня класса. Я пытаюсь понять все, что я могу делать с классами. Я решил создать классы банковских счетов и в конечном итоге подклассы, но я повесил трубку, пытаясь создать уникальные банковские счета.Переменные уровня класса 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
Как бы я назвал это внутри класса: __class__. или cls. вместо себя? – Grouchy
Вы не хотите, чтобы он был частью класса, поэтому поместите 'self.account_names = []' в начало метода '__init__'. – Blender