Fundamentos de POO para interfaces gráficas en Python

Método string

Otro método especial que vale la pena comentar es __str__, sirve para dar una representación textual a un objeto en forma de cadena.

En nuestro caso nos sería muy útil para mostrar un resumen de la galleta al imprimirla por pantalla con print():

class Galleta:

    def __init__(self, sabor="dulce", chocolate=False):
        self.sabor = sabor
        self.chocolate = chocolate

    def __str__(self):
    	resumen = "Soy una galletita " + self.sabor
    	if self.chocolate:
    		resumen += " con chocolate"
    	return resumen  # debe devolver una cadena

    def chocolatear(self):
        self.chocolate = True


galleta = Galleta()
print(galleta)

Como vemos print() ejecuta implícitamente el metodo string del objeto galleta.

Este valor también podemos conseguirlo llamándolo directamente o utilizando la función str():

galleta = Galleta()
print(galleta)

resumen_galleta = galleta.__str__()
print(resumen_galleta)

resumen_galleta = str(galleta)
print(resumen_galleta)

Bastante útil como véis.