嵌套字典的属性

时间:2017-03-03 13:51:30

标签: python properties setter

我们拥有适用于嵌套词典的属性:

class A(object):
    _x = {}

    @property
    def z(self):
       return self._x.get('_y', {}).get('_z')

    @z.setter
    def z(self, value):
        if not self._x.get('_y'):
           self._x['_y'] = {}
        self._x['_y']['_z'] = value

如何创建属性y以摆脱检查:

if not self._x.get('_y'):
   self._x['_y'] = {}

z setter最终必须如下:

@z.setter
def z(self, value):
   self.x.y['_z'] = value

1 个答案:

答案 0 :(得分:2)

使用setdefault

@z.setter
def z(self, value):        
    self._x.setdefault('_y',{})['_z'] = value

如果_y中存在self._x,它会检索它,否则会创建一个新词典。