我们拥有适用于嵌套词典的属性:
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
答案 0 :(得分:2)
使用setdefault
:
@z.setter
def z(self, value):
self._x.setdefault('_y',{})['_z'] = value
如果_y
中存在self._x
,它会检索它,否则会创建一个新词典。