についての@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)
これが元のコードよりも多かれ少なかれPythonicであるかどうかはわかりませんが、コードを使用している誰かが奇妙なエラーを受け取っている理由を後で理解しようとするときに、かなりの時間を節約できるようです.