Oi Jeanderson! Tudo bem?
Vamos por partes para esclarecer suas dúvidas sobre o método especial __str__
em Python.
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
.
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'
.
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.
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 ✓.