Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida sobre a explicação do DEF STR e return?

Quando usamos a teg: def str(self): return self._nome

Quero entender o seguinte ponto, Esse esse STR, informa que será exibido uma informação na tela que é texto, é isso, então defino o texto que é para exibir e no código abaixo return, é para retornar a definição, é isso?

Toda classe nova que eu criar e afiliar ao uma class pai, devo usar essa teg? Esse STR é abreviação de string, correto?

1 resposta
solução!

Oi Jeanderson! Tudo bem?

Vamos por partes para esclarecer suas dúvidas sobre o método especial __str__ em Python.

  1. O que é o __str__? O método __str__ é um método especial em Python que define como um objeto deve ser representado como uma string. Quando você usa print(objeto) ou str(objeto), o Python chama o método __str__ do objeto para determinar o que deve ser exibido.

    No seu exemplo:

    def __str__(self):
        return self._nome
    

    Isso significa que, quando você imprime uma instância dessa classe, será exibido o valor do atributo _nome.

  2. Por que usar __str__? Usar o __str__ é útil para tornar a saída dos objetos mais legível e informativa. Em vez de exibir algo como <modelos.cardapio.bebida.Bebida object at 0x0000021556F363F0>, você verá o nome da bebida, por exemplo, 'Suco de Melancia'.

  3. Toda classe nova precisa de __str__? Não é obrigatório que toda classe tenha um método __str__. No entanto, é uma boa prática adicioná-lo se você quiser uma representação legível do objeto quando ele for impresso. Especialmente em classes que representam entidades que têm uma representação textual significativa, como produtos, pessoas, etc.

  4. str é abreviação de string? Sim, str é uma abreviação de "string". Em Python, str é o tipo de dados para strings (sequências de caracteres).

Exemplo Prático

Vamos criar um exemplo prático para ilustrar:

class Bebida:
    def __init__(self, nome, preco, tamanho):
        self._nome = nome
        self._preco = preco
        self._tamanho = tamanho

    def __str__(self):
        return f"{self._nome} - {self._tamanho} - R$ {self._preco}"

class Prato:
    def __init__(self, nome, preco, descricao):
        self._nome = nome
        self._preco = preco
        self._descricao = descricao

    def __str__(self):
        return f"{self._nome} - {self._descricao} - R$ {self._preco}"

bebida_suco = Bebida('Suco de Melancia', 5.0, 'grande')
prato_paozinho = Prato('Pãozinho', 2.0, 'O melhor pão da cidade')

print(bebida_suco)
print(prato_paozinho)

Ao executar este código, a saída será:

Suco de Melancia - grande - R$ 5.0
Pãozinho - O melhor pão da cidade - R$ 2.0

Espero ter ajudado e bons estudos!

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