Python class variable not updating -


i have class taking in id , trying update variable current_account when print out details of current_account hasn't updated.

anyone got ideas this? new python might doing stupid can't see.

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:                 account in self.accounts:                     if account['_id'] == account_id:                         self.current_account = account                         print self.current_account['_id']             else:                 raise exception("no accounts available.") 

assume set_my_account() gets dictionary of account data , set_accounts() list of dictionaries of account data.

so when following:

user_data = userdata(db_conn=db_conn) user_data.set_current_account(account_id=account_id) 

where db_conn valid database connection , account_id valid account id.

i following out of above 2 lines.

none 518a310356c02c0756764b4e 512754cfc1f3d16c25c350b7 

so none value declaration of class , next 2 call set_current_account(). first id value i'm trying set. second id value set class __init__() method.

there lot of redundancies un-pythonic constructions. cleaned code me understand trying do.

class userdata(object):     def __init__(self, db_conn):         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 account_id none:             self.current_account = self.my_account         else:             if not self.accounts:                 raise exception("no accounts available.")              account in self.accounts:                 if account['_id'] == account_id:                    self.current_account = account                    print self.current_account['_id']  user_data = userdata(db_conn) user_data.set_current_account(account_id) 

you used default arguments (db_conn=none) when call without explicit argument invalid. yes, can call __init__(none) call __init__('nalum'); can't protect against everything.

by moving "no accounts" exception block fast-fails , save 1 level of indention.

the call userdata(db_conn=db_conn) valid unecessarily repetitive.

unfortunately, still can't figure out trying accomplish , perhaps largest flaw. variable names terribly important reader (which may future you) make sense of code. current_account, my_account, account_id , current_account['_id'] obscure intention should consider more distinct, informative names.


Comments

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -