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.

Crear clase y representarla sin comillas.

Necesito representar mi tipo de dato PS sin las comillas al principio y al final.
(por lo que ‘+’ se convierte en +)

Intenté anular repr pero no puedo entender cómo hacerlo correctamente. Mi problema:

class E:                # Clase de Expresión
    pass

class AE(E):            # Clase de Expresión Aritmética
    pass

class BO(AE):           # Clase de Operación Binaria
    pass

class P(BO):            # Clase de Suma
    operator = PS()

class PS:               # Clase de Signo de Suma
    def __repr__(self):
        return +        # <- obviamente genera un error
                        # ¿cómo devolver la cadena '+'' sin las comillas simples (así: '+'' -> +)?
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para representar el tipo de dato PS sin las comillas de inicio y fin, puedes sobrescribir el método str en la clase PS:

    class PS:
        def __str__(self):
            return '+'
    

    Entonces, cuando llames a str() o imprimas una instancia de la clase PS, devolverá '+' sin las comillas.

    Si también quieres sobrescribir el método repr() para mostrar la instancia de PS con el símbolo +, puedes hacer algo como esto:

    class PS:
        def __str__(self):
            return '+'
    
        def __repr__(self):
            return self.__str__()
    

    Ahora, cuando llames a repr() en una instancia de la clase PS, también devolverá + sin las comillas.

    Espero que esto te ayude!

Comments are closed.