Klassen und Vererbungen
Verfasst: Sonntag 10. Januar 2016, 17:38
Hallöchen liebes Forum, ich experimentiere grad etwas mit Klassen und Vererbungen herum und hab hier einen Code aufgrund einer Übungsaufgabe erstellt (die Kommentare waren gegeben) und ich glaube da tummeln sich vermutlich viele fehler, aber nun erstmal zur Fehlermeldung, denn bei der Ausgabe kommt immer: __init__() missing 1 required positional argument: 'fahrer'
Bin etwas ratlos was das angeht. Vielleicht kann mir ja jemand helfen, die Fehler alle raus zu bekommen
Bin etwas ratlos was das angeht. Vielleicht kann mir ja jemand helfen, die Fehler alle raus zu bekommen
Code: Alles auswählen
# mutterklasse Kraftfahzeug
class Kraftfahrzeug(object):
ANZAHL = 0
# klassenvariable ANZAHL (int) - repraesentiert die anzahl der existierenden instanzen
# muss bei der instanziierung eines objekts also um 1 erhoeht werden
# und bei der zerstoerung eines objekts um 1 verringert werden
def __init__(self, idnr, marke, leistung, fahrer):
self.idnr = idnr
self.marke = marke
self.leistung = leistung
self.fahrer = fahrer
self.__class__.ANZAHL += 1
# attribute: idnr (int), marke (str), leistung (int), fahrer (str)
# fahrer wird nicht uebergeben sondern mit None initialisiert
def anlassen(self):
print ("Das Fahrzeug laeuft")
# ausgabe: "Das Fahrzeug laeuft"
def hupen(self):
print ("")
# ausgabe: ""
# wird in subklassen mit spezifischem inhalt ueberschrieben
def getId(self):
print (self.idnr)
# rueckgabe: idnr
def getLeistung(self):
return self.leistung + "PS"
# rueckgabe: "<leistung> PS" als string
def setFahrer(self):
self.fahrer = ""
print (self.fahrer + " steigt ein")
# ein name wird uebergeben und dem attribut fahrer zugewiesen
# ausgabe: "<name> steigt ein"
def __del__(self):
self.__class__.ANZAHL -= 1
# in dieser methode kann man spezifizieren, was passiert, wenn
# ein objekt geloescht/zerstoert wird
def getAnzahlFahrzeuge(self):
return self.ANZAHL
# klasse Motorrad, erbt von Kraftfahrzeug
class Motorrad(Kraftfahrzeug):
def __init__(self, beiwagen):
Kraftfahrzeug.__init__(self,idnr, marke, leistung, fahrer)
beiwagen = input()
self.beiwagen = beiwagen
# zusaetzliche attribute: beiwagen (bool)
# beiwagen wird uebergeben
def hupen(self):
print ("Motorrad hupt")
# ausgabe: "Motorrad hupt"
# klasse Auto, erbt von Kraftfahrzeug
class Auto(Kraftfahrzeug):
def __init__(self,fahrzeugklasse):
Kraftfahrzeug.__init__(self,idnr, marke, leistung, fahrer)
fahrezugklasse = input()
self.fahrzeugklasse = fahrzeugklasse
# zusaetzliche attribute: fahrzeugklasse (str)
# fahrzeugklasse wird uebergeben
def hupen(self):
print ("Auto hupt")
# ausgabe: "Auto hupt"
# klasse Sportwagen, erbt von Auto
class Sportwagen(Auto):
def __init__(self,hoechstgeschwindigkeit):
Auto.__init__(self,fahrzeugklasse)
hoechstgeschwindigkeit = input()
self.hoechstgeschwindigkeit = hoechstgeschwindigkeit
self.fahrzeugklasse = "Sportwagen"
# zusaetzliche attribute: hoechstgeschwindigkeit
# hoechstgeschwindigkeit wird uebergeben und ist ein integer
# fahrzeugklasse vom Sportwagen ist immer "Sportwagen"
def hupen(self):
print ("Sportwagen hupt")
# ausgabe: "Sportwagen hupt"
def getHoechstgeschwindigkeit(self):
return hoechstgeschwindigkeit
# rueckgabe: hoechstgeschwindigkeit
# klasse LKW, erbt von Kraftfahrzeug
class LKW(Kraftfahrzeug):
def __init__(self, ladeflaeche):
Kraftfahrzeug.__init__(self,idnr, marke, leistung, fahrer)
self.ladeflaeche = ladeflaeche
# zusaetzliche attribute: ladeflaeche (float)
def hupen(self):
print ("LKW hupt")
# ausgabe: "LKW hupt"
generic = Kraftfahrzeug(1, "nix", 0)
lkw1 = LKW(6489, "MAN", 500, "20")
lkw2 = LKW(6408, "Volvo", 400, "27")
lkw1.setFahrer("Klaus")
lkw1.anlassen()
lkw1.hupen()
lkw2.setFahrer("Hubert")
lkw2.anlassen()
lkw2.hupen()
auto1 = Auto(12323, "Opel", 105, "Caravan")
auto2 = Sportwagen(786487, "Porsche", 270, 370)
auto1.setFahrer("Dominik")
auto1.hupen()
auto2.setFahrer("Simon")
auto2.hupen()
print(auto1.getLeistung())
print(auto2.getLeistung())
motorrad1 = Motorrad(9877, "Harley Davidson", 40, True)
motorrad1.setFahrer("Wilczek")
motorrad1.hupen()
print(motorrad1.getLeistung())
print(generic.getAnzahlFahrzeuge())
del auto1
print(generic.getAnzahlFahrzeuge())