Skip to main content
 首页 » 编程设计

python 2.7 : Is it good practice to set all args/kwargs attribute with setattr

2025年05月04日23xiaohuochai

<分区>

在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]) 

在我的例子中,我已经提前知道我要传递的参数,所以我考虑这个解决方案只是为了减少重复和缩短代码。

这被认为是好的做法吗? 该解决方案相对于手动初始化每个属性有哪些优点/缺点?还有其他更好的方法吗?

编辑:由于第一个评论/答案(正确地)集中在清理论点或列出论点上,我认为在这个框架中可以很容易地解决这个问题。