In Python kann ich Folgendes tun:
>>> list = ['a', 'b', 'c']
>>> ', '.join(list)
'a, b, c'
Gibt es eine einfache Möglichkeit, dasselbe zu tun, wenn ich eine Liste von Objekten habe?
>>> 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
Oder muss ich auf eine for-Schleife zurückgreifen?
map
Ausdruck (unten) verwenden.map
Lösung.Der integrierte String-Konstruktor ruft automatisch auf
obj.__str__
:quelle
reduce
war derjenige, der entfernt wurde, weil es normalerweise Leute erraten ließ und somit nicht "pythonisch" war.map
auf der anderen Seite ist kein Problem.Eine andere Lösung besteht darin, den Join-Operator der Klasse str zu überschreiben.
Definieren wir eine neue Klasse my_string wie folgt
Dann können Sie tun
und du bekommst
Übrigens, indem Sie list als Variablennamen verwenden, definieren Sie die Listenklasse (Schlüsselwort) neu! Verwenden Sie vorzugsweise einen anderen Bezeichnernamen.
Ich hoffe, Sie finden meine Antwort hilfreich.
quelle
Ich weiß, dass dies ein super alter Beitrag ist, aber ich denke, was übersehen wird
__repr__
, ist überschreibend , so dass__repr__ = __str__
dies die akzeptierte Antwort auf diese Frage ist, die als doppelt markiert ist .quelle