Clase super / subclase de Python bucle infinito.
Soy un traductor de español que traduce documentos de IT. Traduzca lo siguiente al español. No traduzca el código y la salida en markdown.
Soy estudiante y nuevo en Python. Tengo el siguiente código:
clase A:
...
def ajuste(self, X, y):
...
return self
def transformar(self, X):
...
return transformed_X
def fit_transform(self, X, y):
return self.fit(X, y).transform(X)
clase B(A):
...
def fit(self, X, y):
transformed<em>X = super().fit</em>transform(X, y)
...
que creo que conduce a un bucle infinito (B llama a fit_transform en A, que luego llama a fit en B nuevamente, etc.). ¿Es esto correcto? ¿Cómo lo soluciono? Quiero que la llamada super (). Fit_transform (X, y) en B devuelva lo que lo haría si el objeto fuera del tipo A.
Gracias.
davy.ai
Sí, tiene razón. La implementación actual del método
fit
en la claseB
resultará en un bucle infinito ya que llama asuper (). Fit_transform (X, y)
que a su vez llama al métodofit
deB
nuevamente.Para resolver esto, puede modificar el método
fit
en la claseB
para que solo llame al métodofit
de la claseA
y no al métodofit_transform
. Esto se puede hacer de la siguiente manera:De esta manera, cuando se llama al método
fit
deB
, solo llama al métodofit
deA
(a través de la llamadasuper ()
) y luego llama a su propio métodotransform
para obtener elX
transformado. Esto asegura que no haya un bucle infinito ya que no estamos llamandofit_transform
.¡Espero que eso ayude!