Hallo,
grundsätzlich würde ich dir empfehlen, wenn du ernsthaft Python lernen willst auf ein Buch zurück zugreifen. Da mir deutschsprachige Bücher lieber sind, empfehle ich dieses hier: https://www.rheinwerk-verlag.de/python-3_4467/
Bevorzugt die PDF Variante, da sich damit leichter nach Schlagwörtern suchen lässt.
Auch so glaube ich, ist das Verständnis von Klassen bei dir noch etwas falsch (ich kann mich natürlich auch irren). Deshalb hier mal ein vereinfachtes Beispiel:
So zunächst eine vereinfachte Darstellung:
- class PKW:
- def __init__(self, marke, modell):
- self.marke = marke
- self.modell = modell
- self.farbe = None
- self.geschwindigkeit = 0
-
- def lackieren(self, farbe):
- self.farbe = farbe
-
- def beschleunigen(self, wert):
- self.geschwindigkeit += wert
-
- def bremsen(self, wert):
- self.geschwindigkeit -= wert
- if self.geschwindigkeit < 0:
- self.geschwindigkeit = 0
-
-
- auto_1 = PKW("VW", "Golf")
- auto_2 = PKW("Seat", "Leon")
- print("Farbe von {} {} ist {}".format(auto_1.marke, auto_1.modell, auto_1.farbe))
- print("Farbe von {} {} ist {}".format(auto_2.marke, auto_2.modell, auto_2.farbe))
- auto_1.lackieren("weiß")
- auto_2.lackieren("schwarz")
- print("Farbe von {} {} ist {}".format(auto_1.marke, auto_1.modell, auto_1.farbe))
- print("Farbe von {} {} ist {}".format(auto_2.marke, auto_2.modell, auto_2.farbe))
- while True:
- if auto_1.geschwindigkeit >= 30:
- break
- else:
- auto_1.beschleunigen(5)
- print("{} {} fährt aktuell {} km/h".format(auto_1.marke, auto_1.modell, auto_1.geschwindigkeit))
-
- while True:
- if auto_1.geschwindigkeit > 0:
- auto_1.bremsen(4)
- else:
- print("{} {} erfolgreich gebremst".format(auto_1.marke, auto_1.modell))
- break
- print("{} {} fährt aktuell {} km/h".format(auto_1.marke, auto_1.modell, auto_1.geschwindigkeit))
Display More
Da man Code aber nicht wiederholen soll (DRY = Dont repeat yourself), hier auch nochmals eine Funktionalisierte Version:
- class PKW:
- def __init__(self, marke, modell):
- self.marke = marke
- self.modell = modell
- self.farbe = None
- self.geschwindigkeit = 0
- def lackieren(self, farbe):
- self.farbe = farbe
- def beschleunigen(self, wert):
- self.geschwindigkeit += wert
- def bremsen(self, wert):
- self.geschwindigkeit -= wert
- if self.geschwindigkeit < 0:
- self.geschwindigkeit = 0
- def autofarbe_anzeigen(auto):
- print("Farbe von {} {} ist {}".format(auto.marke, auto.modell, auto.farbe))
- def auto_beschleunigen_auf_zielgeschwidigkeit(auto, zielgeschwindigkeit):
- while True:
- if auto.geschwindigkeit >= zielgeschwindigkeit:
- break
- else:
- auto.beschleunigen(5)
- print("{} {} fährt aktuell {} km/h".format(auto.marke, auto.modell, auto.geschwindigkeit))
- def auto_bremsen_auf_zielgeschwindigkeit(auto, zielgeschwindigkeit):
- while True:
- if auto.geschwindigkeit > zielgeschwindigkeit:
- auto.bremsen(4)
- else:
- print("{} {} erfolgreich gebremst".format(auto.marke, auto.modell))
- break
- print("{} {} fährt aktuell {} km/h".format(auto.marke, auto.modell, auto.geschwindigkeit))
- def main():
-
-
-
-
- auto_1 = PKW("VW", "Golf")
- auto_2 = PKW("Seat", "Leon")
-
-
- autofarbe_anzeigen(auto_1)
- autofarbe_anzeigen(auto_2)
- auto_1.lackieren("weiß")
- auto_2.lackieren("schwarz")
- autofarbe_anzeigen(auto_1)
- autofarbe_anzeigen(auto_2)
-
-
- auto_beschleunigen_auf_zielgeschwidigkeit(auto_1, 30)
- auto_bremsen_auf_zielgeschwindigkeit(auto_1, 0)
- if __name__ == "__main__":
- main()
Display More
Zum besseren Verständnis empfiehlt es sich, wenn du dir den Programmablauf in einem Debugger ansiehst.
EDIT: Natürlich lassen sich die Funktionen noch variabler gestalten, aber zur Veranschaulichung wollte ich es nicht zu komplex gestalten.