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