En Python, puedo hacer:
>>> list = ['a', 'b', 'c']
>>> ', '.join(list)
'a, b, c'
¿Hay alguna manera fácil de hacer lo mismo cuando tengo una 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
¿O tengo que recurrir a un bucle for?

mapexpresión supuestamente menos legible (abajo).mapsolución.El constructor de cadenas incorporado llamará automáticamente
obj.__str__:fuente
reducefue el que se eliminó, porque generalmente dejaba a la gente adivinando y, por lo tanto, no era "pitónico".mapPor otro lado, no es un problema.Otra solución es anular el operador de unión de la clase str.
Definamos una nueva clase my_string de la siguiente manera
Entonces puedes hacer
y obtienes
Por cierto, al usar la lista como nombre de variable, está redefiniendo la clase de lista (palabra clave) Preferiblemente use otro nombre de identificador.
Espero que mi respuesta sea útil.
fuente
Sé que esta es una publicación súper antigua, pero creo que lo que se pierde es anular
__repr__, por lo que esa__repr__ = __str__es la respuesta aceptada de esta pregunta marcada como duplicada .fuente