No Python, eu posso fazer:
>>> list = ['a', 'b', 'c']
>>> ', '.join(list)
'a, b, c'
Existe alguma maneira fácil de fazer o mesmo quando tenho uma lista de objetos?
>>> class Obj:
... def __str__(self):
... return 'name'
...
>>> list = [Obj(), Obj(), Obj()]
>>> ', '.join(list)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected string, instance found
Ou tenho que recorrer a um loop for?
map
expressão supostamente menos legível (abaixo).map
solução.O construtor de string interno chamará automaticamente
obj.__str__
:fonte
reduce
foi o que foi removido, porque geralmente deixava as pessoas adivinhando e, portanto, não era "pitônico".map
por outro lado, não é um problema.outra solução é substituir o operador de junção da classe str.
Vamos definir uma nova classe my_string da seguinte maneira
Então você pode fazer
e você recebe
BTW, usando list como nome da variável, você está redefinindo a classe da lista (palavra-chave)! De preferência, use outro nome de identificador.
Espero que você ache minha resposta útil.
fonte
Eu sei que este é um post super antigo, mas acho que o que está faltando é primordial
__repr__
, de modo que__repr__ = __str__
, qual é a resposta aceita dessa pergunta marcada como duplicada .fonte