Drucken einer Liste der Objekte, die Benutzer-definierte Klasse
Also ich habe eine Klasse, genannt Vertex
.
class Vertex:
'''
This class is the vertex class. It represents a vertex.
'''
def __init__(self, label):
self.label = label
self.neighbours = []
def __str__(self):
return("Vertex "+str(self.label)+":"+str(self.neighbours))
Will ich drucken einer Liste von Objekten dieser Klasse, wie diese:
x = [Vertex(1), Vertex(2)]
print x
aber es zeigt mir eine Ausgabe wie diese:
[<__main__.Vertex instance at 0xb76ed84c>, <__main__.Vertex instance at 0xb76ed86c>]
Eigentlich wollte ich drucken Sie den Wert Vertex.label
für jedes Objekt.
Gibt es eine Möglichkeit, es zu tun?
InformationsquelleAutor czardoz | 2012-10-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie nur wollen, um das Etikett zu drucken, für jedes Objekt, könnte man eine Schleife oder eine Liste Verständnis:
Aber um auf Ihre ursprüngliche Frage, die Sie brauchen, um zu definieren, die
__repr__
Methode, um die Ausgabe der Liste rechts. Es könnte so etwas einfaches wie das hier:InformationsquelleAutor Daniel Roseman
Wenn Sie wollen ein wenig mehr infos in Ergänzung zu Daniel Roseman Antwort:
__repr__
und__str__
sind zwei verschiedene Dinge in python. (beachten Sie jedoch, dass, wenn Sie definiert haben, nur__repr__
ein Aufrufclass.__str__
übersetzen in einem Aufrufclass.__repr__
)Dem Ziel
__repr__
ist eindeutig. Plus, whenerver möglich, Sie sollte definieren, repr so, dass(in deinem Fall)eval(repr(instance)) == instance
Auf der anderen Seite ist das Ziel der
__str__
werden redeable, so ist es egal, ob man auf drucken, um das Beispiel auf dem Bildschirm (für den Benutzer, wahrscheinlich), wenn Sie nicht brauchen, es zu tun, dann nicht umsetzen (und wieder, wenn str nicht umgesetzt wird aufgerufen, repr)Plus, wenn Art Dinge in der Idle-interpreter, es ruft automatisch die repr Repräsentation Ihres Objekts. Oder wenn Sie drucken, eine Liste, ruft
list.__str__
(die identisch ist mitlist.__repr__
) , fordert in seinem Zug die repr representaion von jedem element der Liste enthält. Dies erklärt das Verhalten, die Sie bekommen und hoffentlich, wie es zu behebenNein, der interpreter ruft die Liste.__str__() (oder repr, es hängt, aber das ist die gleiche Sache) und die Liste.__str__ gibt eine Zeichenfolge zurück, komponiert durch den Aufruf repr aller Objekte, die die Liste enthält
InformationsquelleAutor Ant