Olá,gostaria entender pq no código abaixo não posso troca repr por str e dar o mesmo resultado,do que entendo os dois são métodos mágicos que tem a função para exibir
com repr
class Usuario:
contador = 0
usuarios_armazenados = []
def __init__(self, nome, idade):
self.id = None
self.nome = nome
self.idade = idade
def salvar(self):
self.__class__.contador += 1
self.id = self.__class__.contador
self.__class__.usuarios_armazenados.append(self)
def __repr__(self):
return '<{}: {} - {} - {}>\n'.format(self.__class__.__name__, self.id, self.nome, self.idade)
@classmethod
def all(cls):
return cls.usuarios_armazenados
if __name__ == '__main__':
u1 = Usuario('Regis', 35)
u1.salvar()
u2 = Usuario('Fabio', 20)
u2.salvar()
print(Usuario.all())
resutado:[<Usuario: 1 - Regis - 35>, <Usuario: 2 - Fabio - 20> ]
com str
class Usuario:
contador = 0
usuarios_armazenados = []
def __init__(self, nome, idade):
self.id = None
self.nome = nome
self.idade = idade
def salvar(self):
self.__class__.contador += 1
self.id = self.__class__.contador
self.__class__.usuarios_armazenados.append(self)
def __str__(self):
return '<{}: {} - {} - {}>\n'.format(self.__class__.__name__, self.id, self.nome, self.idade)
@classmethod
def all(cls):
return cls.usuarios_armazenados
if __name__ == '__main__':
u1 = Usuario('Regis', 35)
u1.salvar()
u2 = Usuario('Fabio', 20)
u2.salvar()
print(Usuario.all())
resultado:[<main.Usuario object at 0x03760EF0>, <main.Usuario object at 0x03760FF0>]