大廈@ ThiefMaster的評論關於**kwargs
:
如果你在20個參數服用,它可能會更有意義,要求用戶通過關鍵字來代替位置發送參數:有20個參數,有一個體面有人使用你的代碼會得到錯誤順序的參數。
考慮只有接受kwargs,同時有一個預定義的密鑰列表你想接受和引發ValueError如果你沒有收到它們。所以你可以使用**kwargs
然後檢查一切都在那裏。例如。
INITIAL_ARGS = set(['a','b','c','d','e'...])
def __init__(self, **kwargs):
if not INITIAL_ARGS.issubset(set(kwargs.iterkeys())):
raise ValueError("Class <myclass> requires 20 keyword arguments"
"only given %d" % len(kwargs))
self.__dict__.update(kwargs)
不知道這是否是多還是比你原來少了Python的,但它似乎將節省大量的時間以後試圖找出爲什麼有人使用你的代碼可能會得到奇怪的錯誤時。
可能要小心自我的說法,但在其他看起來不錯 – lxop
將輸入的數量變化,或者是有定數? – HodofHod
謝謝Ixop, 輸入的數量不會改變。 –