Ich spiele gerade einwenig mit OO herum und habe kurz das Beispiel von Wikipedia nachgebastelt.
Nun möchte ich bei meiner Klasse Amphibienfahrzeug eine Methode ergänzen welche ursprünglich zur Klasse Landfahrzeug gehört.
Wenn ich nun die Super funktion direkt nach dem def benutze:
Code: Alles auswählen
def fahren(self, geschwindigkeit):
super().fahren(geschwindigkeit)
if self.meter > 0:
print("Du kannst nicht fahren wenn du am tauchen bist")
Gelöst habe ich es mit der else Ergänzung. Ich zweifle aber ob dass eine schöne Lösung ist. Was meint ihr?
Code: Alles auswählen
def fahren(self, geschwindigkeit):
if self.meter > 0:
print("Du kannst nicht fahren wenn du am tauchen bist")
else:
super().fahren(geschwindigkeit)
Hier noch der komplette Code:
Code: Alles auswählen
# -*- coding: UTF-8 -*
class Landfahrzeug():
def __init__(self):
self.__raeder = 4
self.__maxgeschwindigkeit = 120
def fahren(self, geschwindigkeit):
self.geschwindigkeit = geschwindigkeit
if self.geschwindigkeit > 0 and self.geschwindigkeit < self.__maxgeschwindigkeit:
print("Das Fahrzeug fährt " + str(self.geschwindigkeit) + " km/h")
elif self.geschwindigkeit > self.__maxgeschwindigkeit:
print("Das Fahrzeug kann nicht schneller als 120 km/h fahren")
else:
print("Das Fahrzeug kann nicht langsamer als 0 km/h fahren ")
class Wasserfahrzeug():
def __init__(self):
self.__propeller = 2
self.__maxtauchgang = 20
self.meter = 0
def tauchen(self, meter):
self.meter = meter
if self.meter < self.__maxtauchgang:
print("Das Fahrzeug taucht ab auf " + str(self.meter) + " meter")
else:
print("So tief kann das Fahrzeug nicht tauchen")
class Amphibienfahrzeug(Landfahrzeug, Wasserfahrzeug):
def __init__(self):
Landfahrzeug.__init__(self)
Wasserfahrzeug.__init__(self)
def fahren(self, geschwindigkeit):
if self.meter > 0:
print("Du kannst nicht fahren wenn du am tauchen bist")
else:
super().fahren(geschwindigkeit)
Instanz = Amphibienfahrzeug()
Instanz.tauchen(5)
Instanz.fahren(50)