Printfunktion soll einen Punkt ausgeben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Cleo_DaVinci
User
Beiträge: 6
Registriert: Samstag 3. Juli 2021, 11:55

Hi,
ich habe bereits die Funktion definiert, welche meine Eingabe abspeichert:

Code: Alles auswählen

class Point:
      
    def __init__(self, x, y):
        self.x = x
        self.y = y
Wenn ich zb einen Punkt erstelle mit dem Namen p1 und in die Konsole anschließend schreibe

Code: Alles auswählen

print(p1)
sehe ich nur die Ausgabe:

Code: Alles auswählen

<__main__.Point object at 0x0000013607F9F348>
Wie erreiche ich, dass die Ausgabe so aussieht: "Der Punkt p1 liegt bei (x, y)"?
Vielen Dank,
Cleo
Benutzeravatar
__blackjack__
User
Beiträge: 14056
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

In dem Du die `__str__()`-Methode entsprechend implementierst.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Cleo_DaVinci
User
Beiträge: 6
Registriert: Samstag 3. Juli 2021, 11:55

Ok, also in der Art?

Code: Alles auswählen

    def __str__(self):
        str = "Punkt bei {self.x, self.y}".format(self.x, self.y)
        return str 
Benutzeravatar
__blackjack__
User
Beiträge: 14056
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Cleo_DaVinci: Naja, so das der Code funktioniert wäre natürlich besser. Und der Name `str` ist ungünstig gewählt, wobei das hier auch gar keinen Sinn macht überhaupt einen Namen einzuführen statt einfach den Ausdruck mit ``return`` zu verwenden. Man würde statt der `format()`-Methode hier auch eher ein f-Zeichenkettenliteral verwenden. Das wurde aber auch alles schon mal in diesem Thema von Dir angesprochen: viewtopic.php?f=1&t=52466

Wobei die tatsächlich gewünschte Ausgabe auch so speziell ist, dass die IMHO gar nicht in die Klasse gehört sondern bei der Ausgabe selbst formatiert werden sollte.

Code: Alles auswählen

    point = ...

    ...

    print(f"Der Punkt p1 liegt bei ({point.x}, {point.y})")
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten