1
resposta

Representação string - DUVIDA

O que acontece se por acaso eu precisar de usar mais de um def str(self): na hora de chamar o print(programa) , o que vai acontecer ?

1 resposta

Olá Pedro, tudo bem com você?

Se definirmo mais de um método __str__ em na classe Programas, o Python irá utilizar apenas o segundo método. Pois, quando temos métodos iguais, a primeira declaração será sobrescrita pela segunda declaração do método. Deixo abaixo um exemplo didático utilizando a classe Pessoa:

class Pessoa:

    def __init__(self, nome, sobre_nome, idade):
        self.nome = nome
        self.sobre_nome = sobre_nome
        self.idade = idade

    def __str__(self):
        return f'Usuario: {self.nome} {self.sobre_nome}'

    def __str__(self):
        return f'Nome completo: {self.nome} {self.sobre_nome}, idade: {self.idade}'


objeto_pessoa = Pessoa('Ana', 'Clara', 25)
print(objeto_pessoa)

Resultado


Nome completo: Ana Clara, idade: 25

Note que a segunda definição do método __str__ sobrescreve a primeira definição, imprimindo além do nome completo é impresso a idade, algo que não é feito na primeira definição do método __str__.

Espero ter ajudado. Continue mergulhando em conhecimento e não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!