807 Stimmen

Wie druckt man Instanzen einer Klasse mit print()?

Ich lerne gerade die Grundlagen von Python. Wenn ich versuche, ein Objekt der Klasse Foobar unter Verwendung der print() Funktion erhalte ich eine Ausgabe wie diese:

<__main__.Foobar instance at 0x7ff2a18c>

Gibt es eine Möglichkeit, wie ich die Druckverhalten (oder die String-Darstellung ) einer Klasse y su Objekte ? Zum Beispiel, wenn ich aufrufe print() auf ein Klassenobjekt, möchte ich seine Datenelemente in einem bestimmten Format ausgeben. Wie kann ich das in Python erreichen?

Wenn Sie mit C++-Klassen vertraut sind, können Sie die obigen Ergebnisse für die Standard ostream durch Hinzufügen einer friend ostream& operator << (ostream&, const Foobar&) Methode für die Klasse.

2voto

Stumpy Punkte 37

Es gibt bereits viele Antworten in diesem Thread, aber keine davon hat mir besonders geholfen, ich musste es selbst herausfinden, daher hoffe ich, dass diese hier ein wenig informativer ist.

Sie müssen nur darauf achten, dass Sie am Ende Ihrer Klasse Klammern setzen, z. B:

print(class())

Hier ist ein Beispiel für einen Code aus einem Projekt, an dem ich gearbeitet habe:

class Element:
    def __init__(self, name, symbol, number):
        self.name = name
        self.symbol = symbol
        self.number = number
    def __str__(self):
        return "{}: {}\nAtomic Number: {}\n".format(self.name, self.symbol, self.number

class Hydrogen(Element):
    def __init__(self):
        super().__init__(name = "Hydrogen", symbol = "H", number = "1")

Zum Drucken meiner Wasserstoffklasse habe ich Folgendes verwendet:

print(Hydrogen())

Bitte beachten Sie, dass dies ohne die Klammern am Ende von Hydrogen nicht funktioniert. Sie sind notwendig.

Ich hoffe, das hilft Ihnen, und Sie können mir Bescheid sagen, wenn Sie weitere Fragen haben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X