Klassen, Methoden, Funktionen
Verfasst: Montag 1. April 2024, 14:58
Hi zusammen,
neu hier - falls ich das falsche Board gewählt habe, sorry.
Wie bekomme ich beim kopieren aus VStudio die Zeilennummern mit?
Egal, ich hab's fett gedruckt.
Klasse definiert, Methode "Vektoraddition" implementiert und auf einem neuen Objekt p3 aufgerufen.
In der Methode dachte ich, dass ich zuerst ein Objekt "self" erzeugen muss, dann war das Resultat aber immer 99/99 (init-werte)
Mit # funktioniert es tadellos. Aber warum? Selbst wenn ich das "self" neu erzeuge, wird doch gleich danach self.x und self.y überschrieben...
Der zweite fette Eintrag betrifft einen Kommentar. Habe ich das richtig verstanden?
Danke und lg,
HrAyas
class Punkt():
def __init__(self, x = 99, y = 99): #IMMER den Attributen Standardwerte zuordnen, sonst gibts Fehler!
self.x = x
self.y = y
def __str__(self):
return f'( {self.x} | {self.y} )'
def add(self, p1, p2):
#self = Punkt() #wenn diese Zeile drin bleibt, kommt immer ein "jungfräulicher" Punkt raus! WARUM?
self.x = p1.x + p2.x
self.y = p1.y + p2.y
return(self)
p1 = Punkt() #ohne __init Anfangswerte gibt es hier eine Fehlermeldung, weil nur deklariert, aber nicht initialisiert wurde (?stimmt das?)
p1.x = 17 #lässt man init ganz weg, fällt niemandem auf, dass bei Punkt() was fehlt
p1.y = 12
p2 = Punkt(-9,-4)
p3 = Punkt()
p3.add(p1,p2)
print(f"Punkt 1: {p1}")
print(f"Punkt 2: {p2}")
print(f"Punkt 3: {p3}")
neu hier - falls ich das falsche Board gewählt habe, sorry.
Wie bekomme ich beim kopieren aus VStudio die Zeilennummern mit?
Egal, ich hab's fett gedruckt.
Klasse definiert, Methode "Vektoraddition" implementiert und auf einem neuen Objekt p3 aufgerufen.
In der Methode dachte ich, dass ich zuerst ein Objekt "self" erzeugen muss, dann war das Resultat aber immer 99/99 (init-werte)
Mit # funktioniert es tadellos. Aber warum? Selbst wenn ich das "self" neu erzeuge, wird doch gleich danach self.x und self.y überschrieben...
Der zweite fette Eintrag betrifft einen Kommentar. Habe ich das richtig verstanden?
Danke und lg,
HrAyas
class Punkt():
def __init__(self, x = 99, y = 99): #IMMER den Attributen Standardwerte zuordnen, sonst gibts Fehler!
self.x = x
self.y = y
def __str__(self):
return f'( {self.x} | {self.y} )'
def add(self, p1, p2):
#self = Punkt() #wenn diese Zeile drin bleibt, kommt immer ein "jungfräulicher" Punkt raus! WARUM?
self.x = p1.x + p2.x
self.y = p1.y + p2.y
return(self)
p1 = Punkt() #ohne __init Anfangswerte gibt es hier eine Fehlermeldung, weil nur deklariert, aber nicht initialisiert wurde (?stimmt das?)
p1.x = 17 #lässt man init ganz weg, fällt niemandem auf, dass bei Punkt() was fehlt
p1.y = 12
p2 = Punkt(-9,-4)
p3 = Punkt()
p3.add(p1,p2)
print(f"Punkt 1: {p1}")
print(f"Punkt 2: {p2}")
print(f"Punkt 3: {p3}")