У меня есть класс, который принимает идентификатор и пытается обновить переменную current_account, но когда я распечатываю данные текущего_account, он не обновляется.Переменная класса Python не обновляется
У кого-нибудь есть идеи для этого? Новое для python, возможно, делает что-то глупое, чего я не вижу.
class UserData:
def __init__(self, db_conn=None):
if None == db_conn:
raise Exception("DB Connection Required.")
self.db = db_conn
self.set_my_account()
self.set_accounts()
self.set_current_account()
def set_current_account(self, account_id=None):
print account_id
if None == account_id:
self.current_account = self.my_account
else:
if len(self.accounts) > 0:
for account in self.accounts:
if account['_id'] == account_id:
self.current_account = account
print self.current_account['_id']
else:
raise Exception("No accounts available.")
Предположим, что set_my_account()
получает словарь данных учетных записей и set_accounts()
получить список словарей учетных данных.
Так что, когда я делаю следующее:
user_data = UserData(db_conn=db_conn)
user_data.set_current_account(account_id=account_id)
Где db_conn
является действительным соединением с базой данных и account_id
является действительным идентификатором аккаунта.
Я получаю следующее из двух вышеуказанных строк.
None
518a310356c02c0756764b4e
512754cfc1f3d16c25c350b7
Таким образом, значение None
от декларации класса, а затем следующий два из вызова set_current_account()
. Первое значение id
- это то, что я пытаюсь установить. Второе значение id
- это то, что уже было установлено из метода класса __init__()
.
Обратите внимание, что 'None == account_id' вряд ли является идиоматическим Python. 'None' - это одноэлементный объект, используйте' if account_id is None: ', чтобы проверить его. –
Для записи ваш вопрос касается переменной ** экземпляра **, а не переменной класса, и при определении ваших собственных классов вы всегда должны наследовать от 'object', например:' class UserData (object): ' –
Спасибо для информации, обновит класс, как было предложено. – Nalum