getattr - Python 2 __getattr__ max recursion depth -


for example use code:

class a(object):     def __init__(self):         self.dict1 = {             'a': 3,             'b': self.a}     def __getattr__(self, key):         if key in self.dict1:             return self.dict1[key] = a() 

and when it's runned throws maximum recursion depth exceeded. can please tell me doing wrong here

the reference self.dict1 inside __getattr__ method causes __getattr__ called again, , on, hence infinite recursion. safe way access attributes of self inside __getattr__ using references self.__dict__. try

def __getattr__(self, key):     if key in self.__dict__['dict1']:         return self.__dict__['dict1'][key] 

note absence of else clause mean undefined attributes appear have value none.


Comments

Popular posts from this blog

get url and add instance to a model with prefilled foreign key :django admin -

css - Make div keyboard-scrollable in jQuery Mobile? -

ruby on rails - Seeing duplicate requests handled with Unicorn -