Sobre la base de comentario de @ ThiefMaster sobre **kwargs
:
Si usted está tomando en 20 argumentos, podría tener más sentido exigir a sus usuarios enviar argumentos a través de palabras clave en lugar de la posición: con 20 argumentos, hay una decente posibilidad de que alguien que use su código obtenga los argumentos en el orden incorrecto.
Considere solo aceptando kwargs mientras tiene una lista predefinida de claves que desea aceptar y levantando un ValueError si no las recibe. Entonces puedes usar **kwargs
y luego verificar que todo esté allí. P.ej.
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)
No estoy seguro de si esto es más o menos Pythonic del original, pero parece que se ahorraría un montón de tiempo más adelante, cuando tratando de averiguar por qué alguien que use su código podría estar recibiendo errores extraños.
posible que desee tener cuidado con el argumento de uno mismo, pero por lo demás se ve bien – lxop
Será el número de entradas de cambiar, o hay un número determinado? – HodofHod
Gracias Ixop, El número de entrada no cambiará. –