Crear una clase hija a partir de una clase padre, con los mismos argumentos.
Tengo una clase padre Parent
y una clase hija Child
que reenvía todos los argumentos de inicialización a Parent
. (Solo agrega unos pocos métodos).
class Parent:
def <strong>init</strong>(self, alpha, beta, zeta, omicron):
self.alpha = alpha
self.c = alpha + beta + zeta + omicron
class Child(Parent):
def <strong>init</strong>(self, <em>*args</em>, **kwargs):
super().<strong>init</strong>(<em>*args</em>, **kwargs)
<pre><code>def show(self):
print(self.alpha, self.c)
</code></pre>
p = Parent(23.7, 0.0, 1.0, -4.1)
<h1>¿Cómo crear un hijo a partir de p?</h1>
<h1>c = ... ?</h1>
<code>
Dado una instancia de la clase padre, ¿cómo puedo crear mejor una instancia de la clase hija a partir de ella?
Se me ocurrió agregar algo como
</code>python
@classmethod
def from_parent(cls, parent):
return cls(
parent.alpha,
# parent.beta,
# parent.zeta,
# parent.omicron
)
pero Parent
no tiene todos los argumentos necesarios para crear otra instancia a partir de ella.
¿Alguna pista?
davy.ai
Dado que
Child
envía todos los argumentos aParent
, podemos simplemente crear una instancia deChild
usando los mismos argumentos que se utilizaron para crear la instancia deParent
. Aquí hay un ejemplo:En este ejemplo, creamos una instancia de
Child
llamadac
a partir de la instancia deParent
llamadap
. Pasamosp.alpha
como primer argumento y configuramos los otros argumentos con valores apropiados para que la instancia resultante deChild
tenga las mismas propiedades quep
. Luego llamamos al métodoshow
dec
para verificar que se haya creado correctamente.