Establecer los atributos __init__ basados en los argumentos de __init__
Me gustaría reducir el número de filas en la definición de la clase y crear atributos _init _ que tengan el mismo nombre que los argumentos _init _. ¿Es esto posible?
class Num():
def __init__(self, arg1, arg2):
self.arg3 = 'tres'
# algún tipo de magia aquí
a = Num('uno', 'dos') # instancia
luego
print(a.arg1) # uno
print(a.arg2) # dos
print(a.arg3) # tres
davy.ai
Sí, es posible reducir el número de filas en la definición de la clase y crear atributos en
__init__
que tengan el mismo nombre que los argumentos de__init__
utilizando la característica **kwargs (argumentos de palabras clave) en Python.La siguiente es una forma de hacerlo:
El código anterior asigna los valores dados como argumentos en la creación de la instancia a sus respectivos atributos. El parámetro
**kwargs
recopila todos los argumentos de palabras clave pasados y la líneaself.__dict__.update(kwargs)
establece cada argumento de palabra clave como el atributo de la instancia con el mismo nombre. Por último, el atributoarg3
se establece como'three'
.Por lo tanto, la salida de las declaraciones de impresión en el código original será la siguiente:
Por lo tanto, es posible reducir el número de filas en la definición de la clase y crear los atributos
__init__
que tienen el mismo nombre que los argumentos de__init__
utilizando la característica **kwargs en Python.