Python: how to implement __getattr__()?

后端 未结 8 1871
北海茫月
北海茫月 2020-12-07 22:57

My class has a dict, for example:

class MyClass(object):
    def __init__(self):
        self.data = {\'a\': \'v1\', \'b\': \'v2\'}

Then I

8条回答
  •  执笔经年
    2020-12-07 23:07

    I figured out an extension to @glglgl's answer that handles nested dictionaries and dictionaries insides lists that are in the original dictionary:

    class d(dict):
        def __init__(self, *a, **k): 
            super(d, self).__init__(*a, **k)
            self.__dict__ = self
            for k in self.__dict__:
                if isinstance(self.__dict__[k], dict):
                    self.__dict__[k] = d(self.__dict__[k])
                elif isinstance(self.__dict__[k], list):
                    for i in range(len(self.__dict__[k])):
                        if isinstance(self.__dict__[k][i], dict):
                            self.__dict__[k][i] = d(self.__dict__[k][i])
    

提交回复
热议问题