<分区> 分区>
在this答案显示了如何自动将传递给类的 kwargs/args 设置为属性 __init__
例如,可以这样做:
class Employee(object):
def __init__(self, *initial_data, **kwargs):
# EDIT
self._allowed_attrs = ['name', 'surname', 'salary', 'address', 'phone', 'mail']
for dictionary in initial_data:
for key in dictionary:
if key in self._allowed_attrs: # EDIT
setattr(self, key, dictionary[key])
for key in kwargs:
if key in self._allowed_attrs: # EDIT
setattr(self, key, kwargs[key])
在我的例子中,我已经提前知道我要传递的参数,所以我考虑这个解决方案只是为了减少重复和缩短代码。
这被认为是好的做法吗? 该解决方案相对于手动初始化每个属性有哪些优点/缺点?还有其他更好的方法吗?
编辑:由于第一个评论/答案(正确地)集中在清理论点或列出论点上,我认为在这个框架中可以很容易地解决这个问题。
