在Python中,将类重置为“默认状态”的标准/常用方法是什么?例如,在将某些内容加载到类之前,可能需要重置现有数据。在
例如,请检查下面的self.clear()
方法:
class ConLanguage:
SERIALIZABLE_ATTRIBUTES = \
["roots", "prefixes", "suffixes"...] #list of "important" fields
def __init__(self):
self.roots = []
self.prefixes = []
self.suffixes = []
.....
def clear(self): # <<--- this method
tmp = ConLanguage()
for attr in self.SERIALIZEABLE_ATTRIBUTES:
setattr(self, attr, getattr(tmp))
def loadFromDict(self, inDict):
defaultValues = ConLanguage()
for attr in self.SERIALIZABLE_ATTRIBUTES:
setattr(self, attr, inDict.get(attr, getattr(defaultValues.attr)))
def loads(self, s):
self.loadFromDict(json.loads(s))
这种方法似乎能做到这一点,但我想知道是否还有其他方法可以做到这一点。在
other question(没有可接受的答案)似乎涵盖了不同的问题-它有几个数值字段需要全部初始化为零,而在这种情况下,有一堆成员具有不同的默认状态-字典、数组、数字、字符串等
因此,它不是关于“如何迭代类属性”的,而是关于“python是否有针对这种特殊情况的常用范式”。使用字符串按名称访问属性似乎不太正确。在
如果您将
SERIAIZABLE_ATTRIBUTES
更改为包含属性及其默认值的dict
,则可以避免初始化一个临时实例来复制属性,并通过调用clear初始化对象,在这种情况下没有代码重复。在相关问题 更多 >
编程相关推荐