Seite 1 von 1

Printfunktion soll einen Punkt ausgeben

Verfasst: Dienstag 6. Juli 2021, 14:26
von Cleo_DaVinci
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

Re: Printfunktion soll einen Punkt ausgeben

Verfasst: Dienstag 6. Juli 2021, 14:41
von __blackjack__
In dem Du die `__str__()`-Methode entsprechend implementierst.

Re: Printfunktion soll einen Punkt ausgeben

Verfasst: Dienstag 6. Juli 2021, 15:36
von Cleo_DaVinci
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 

Re: Printfunktion soll einen Punkt ausgeben

Verfasst: Dienstag 6. Juli 2021, 15:43
von __blackjack__
@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})")