Ao avançar no curso construimos o seguinte código:
class Restaurante:
restaurantes = []
def __init__(self,nome,categoria):
self._nome = nome.title()
self._categoria = categoria.upper()
self._ativo = False
self._avaliacao = []
Restaurante.restaurantes.append(self)
def __str__(self):
return f'{self._nome} | {self._categoria} | {self.ativo}'
@classmethod
def listar_restaurantes(cls):
print(f'{'Nome do Restaurante:'.ljust(25)} | {'Categoria:'.ljust(25)} | {'Status:'}')
for restaurante in cls.restaurantes:
print(f'{restaurante._nome.ljust(25)} | {restaurante._categoria.ljust(25)} | {restaurante.ativo}')
@ property
def ativo(self):
return '✅' if self._ativo else '❌'
def alternar_status(self):
self._ativo = not self._ativo
Qual a utilidade do metodo "def str" nesse condigo especificamente? Quando retiro ele do script, a lista de restaurantes continua aparecendo da mesma forma. Em um primeiro momento eu entendi que ele retorna o objeto no formato de string. Mas quando criamos o metodo de classe listar_restaurantes, aparentemente o str perdeu a utilidade.