__init__ ein Objekt (eine Instanz) übergeben
Verfasst: Mittwoch 16. März 2022, 16:38
Hallo zusammen,
vorab_1: ich bin neu hier und habe schon noch meiner Frage gesucht, aber keine Antwort gefunden. Falls sie bereits beantwortet wurde, freue ich mich auch über einen Link.
vorab_2: Python ist meine erste Programmiersprache, die ich zur Zeit lerne. Bisher habe ich ein Buch zur Einführung und diverse Videos bei Youtube zum Lernen verwendet. Ich verfüge also über keine wirkliche Erfahrung was das Programmieren allgemein angeht, bilde mir aber ein, dass ich die wesentlichen Basics aus dem Buch für Python3 verstanden habe.
Nun zu meiner Frage zur OOP, bei der es nicht um Vererbung geht (was Vererbung macht, ist mir relativ klar):
Meine Überlegung: ich möchte ein Auto mittels einer Klasse Fahrzeug erstellen und dieses Auto soll 4 Räder haben, welche ebenfalls mittels einer Klasse Rad erstellt werden. Der Code könnte z.B. wie folgt aussehen:
Nun zur eigentlichen Frage: "Darf" man einem Initialisator (__init__) so ohne weiteres nicht "nur" einfach Datentypen (strings, integers, floats etc), sondern auch (wie in meinem Beispiel) ganze Instanzen anderer Klassen übergeben? Könnte mich dieses Verhalten mal in Schwierigkeiten bringen/ wird das genauso in der Praxis gemacht?
Und als abschließende Frage: ist der Zugriff auf den Durchmesser des linken Hinterrades von auto1 so zulässig (wird das so in der Praxis gemacht?)?
Danke schon mal (und sorry, dass es so viel Text geworden ist; wollte es so eindeutig wie möglich formulieren)!
vorab_1: ich bin neu hier und habe schon noch meiner Frage gesucht, aber keine Antwort gefunden. Falls sie bereits beantwortet wurde, freue ich mich auch über einen Link.
vorab_2: Python ist meine erste Programmiersprache, die ich zur Zeit lerne. Bisher habe ich ein Buch zur Einführung und diverse Videos bei Youtube zum Lernen verwendet. Ich verfüge also über keine wirkliche Erfahrung was das Programmieren allgemein angeht, bilde mir aber ein, dass ich die wesentlichen Basics aus dem Buch für Python3 verstanden habe.
Nun zu meiner Frage zur OOP, bei der es nicht um Vererbung geht (was Vererbung macht, ist mir relativ klar):
Meine Überlegung: ich möchte ein Auto mittels einer Klasse Fahrzeug erstellen und dieses Auto soll 4 Räder haben, welche ebenfalls mittels einer Klasse Rad erstellt werden. Der Code könnte z.B. wie folgt aussehen:
Code: Alles auswählen
class Rad():
def __init__(self, diameter, mass):
"""Einheiten: [mm],[kg]"""
self.durchmesser=diameter
self.masse=mass
vorderrad=Rad(700,10)
hinterrad=Rad(750,14)
#alle Attribute von einer Instanz 'Rad' mitsamt deren Werte ausgeben
print(vars(vorderrad))
print(vars(hinterrad))
class Fahrzeug():
def __init__(self, lenght, width, hight, lf, rf, lb, rb): # lf-->left front, rf--> right front etc
"""Einheiten: [mm],[kg]"""
self.laenge=lenght
self.breite=width
self.höhe=hight
self.linkes_vorderrad=lf
self.rechtes_vorderrad=rf
self.linkes_hinterrad=lb
self.rechtes_hinterrad=rb
auto1=Fahrzeug(4.9, 1.85, 1.5, vorderrad, vorderrad, hinterrad, hinterrad) #die Vorderräder sind also kleiner als die Hinterräder
# ein Attribut des Rades der Instanz 'auto1' ausgeben
print(auto1.linkes_hinterrad.durchmesser)
Und als abschließende Frage: ist der Zugriff auf den Durchmesser des linken Hinterrades von auto1 so zulässig (wird das so in der Praxis gemacht?)?
Danke schon mal (und sorry, dass es so viel Text geworden ist; wollte es so eindeutig wie möglich formulieren)!