在this回答它顯示爲屬性傳遞給類__init__
Python 2.7:使用setattr設置所有args/kwargs屬性是否很好?
例如,kwargs/ARGS如何自動設置,我們可以這樣做:
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])
在我來說,我已經提前知道論點我將通過,所以我正在考慮這個解決方案只有一個較少的重複和較短的代碼。
這是否被認爲是良好做法? 這是針對手動初始化每個屬性的解決方案的贊成/反對?還有其他更好的方法嗎?由於第一條評論/回答(正確)側重於清理參數或列出參數,我認爲在這個框架中可以很容易地解決這個問題。
從[的Python禪](https://www.python.org/dev/peps/pep -0020 /):'顯式優於隱式.'。你需要調用者將'* args'綁定到字典中。 – AChampion
感謝您的評論,但我想我會反對'美麗勝於醜陋'和'可讀性計數'。 25行'self.something = kwargs ['something']'對我來說看起來並不漂亮或不可讀,但這顯然是個人的品味 – FLab
我不同意可讀性,我會指出'稀疏比密集好','難以解釋「等。總的來說,我不會贊成這種做法。 – AChampion