es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, tiene razón. La implementación actual del método fit en la clase B resultará en un bucle infinito ya que llama a super (). Fit_transform (X, y) que a su vez llama al método fit de B nuevamente.

    Para resolver esto, puede modificar el método fit en la clase B para que solo llame al método fit de la clase A y no al método fit_transform. Esto se puede hacer de la siguiente manera:

    class B(A):
      ...
    
      def fit(self, X, y):
        super().fit(X, y)
        transformed_X = self.transform(X)
        ...
    

    De esta manera, cuando se llama al método fit de B, solo llama al método fit de A (a través de la llamada super ()) y luego llama a su propio método transform para obtener el X transformado. Esto asegura que no haya un bucle infinito ya que no estamos llamando fit_transform.

    ¡Espero que eso ayude!

Comments are closed.