Für meine mündliche Prüfung in Informatik bin ich gerade am Aufarbeiten meines alten Stoffs. Zur OOM haben wir ein Projekt namens Hofzwerge bearbeitet. Da ich meinen Orginalcode leider nicht mehr habe, hab ich den von Splsah aus diesem Forum genommen und ihn überarbeitet. Ich bin dabei auf ein Problem mit der Vererbung gestoßen. Der Code:
Code: Alles auswählen
class Zwerg:
def __init__(self):
self.name=''
self.werta=2 #Hierauf kommt es an
self.wertb=4 #sowie hierauf
self.basisfreibetrag=10
self.steuerbetrag=3
self.nettogehalt=0
"""
def ausgabe(self):
a=self.basisfreibetrag+self.zusatzfreibetrag
self.freibetrag=a
if self.gehalt > 13:
self.steuerbetrag=(self.gehalt-self.freibetrag)*45/100
else:
self.freibetrag=self.gehalt
self.nettogehalt=self.gehalt-self.steuerbetrag
print 'Nummer des Zwerges:'+str(self.name)+'\n'
print 'Beruf:'+str(self.arbeitergruppe)+'\n'
#print 'Gehalt:'+str(self.gehalt)
#print 'Basisfreibetrag:'+str(self.basisfreibetrag)
#print 'Zusatzfreibetrag:'+str(self.zusatzfreibetrag)
#print 'Freibetrag:'+str(self.freibetrag)
#print 'Steuer:'+str(self.steuerbetrag)+'\n'
#print 'Nettogehalt:'+str(self.nettogehalt)+'\n'
print '------------------------'+'\n'
"""
class Hofzwerg(Zwerg):
def __init__(Zwerg):
self.freibetrag=10
#Hofzwerge 1.Klasse
class Hofzwerg1klasse(Hofzwerg):
def __init__(self):
self.arbeitergruppe='Hofzwerg 1.Klasse'
self.gehalt=35
self.zusatzfreibetrag=3
#Hofzwerge 2.Klasse
class Hofzwerg2klasse(Hofzwerg):
def __init__(self):
self.arbeitergruppe='Hofzwerg 2.Klasse'
self.gehalt=45
self.zusatzfreibetrag=4
#Basisklass der Zeitarbeiter(Achtung diese Arbeiter werden nach Arbeitszeit bezahlt)
class Zeitarbeiter(Zwerg):
def __init__(self):
self.nummer=''
self.freibetrag=10
#Klasse der Kammerkaligraphen
class Kammerkalligraph(Zeitarbeiter):
def __init__(self):
self.arbeitergruppe='Kammerkalligraph'
self.stundenlohn=2
self.zusatzfreibetrag=3
self.gehalt=self.stundenlohn*self.zeiteinheit #Berechnung des Gehaltes
#Klasse der Hofpompfuenbristen
class Hofpompfuenebrist(Zeitarbeiter):
def __init__(self):
self.arbeitergruppe='Hofpompfuenebrist'
self.stundenlohn=8
self.zusatzfreibetrag=3
self.gehalt=self.zeiteinheit*self.stundenlohn
import random
z=10
b=1
while z > 0: #Erzeugung der Objekte
x=int(random.uniform(1,4))
if x==1:
e=Hofzwerg1klasse()
elif x==2:
e=Hofzwerg2klasse()
elif x==3:
e=Kammerkalligraph()
elif x==4:
e=Hofpompfuenebristen()
e.name=b
a=(e.werta)+(e.wertb)
print str(a)
""" e.berechnung
e.ausgabe()"""
b=b+1
z=z-1
In der Python Documentation steht:
Ich verstehe es einfach nicht. Nach dieser Aussage müsste es einwandfrei funktionieren, da ja Zeitarbeiter und Hofzwerge von Zwerg erben.Execution of a derived class definition proceeds the same as for a base class. When the class object is constructed, the base class is remembered. This is used for resolving attribute references: if a requested attribute is not found in the class, the search proceeds to look in the base class. This rule is applied recursively if the base class itself is derived from some other class.
Malibu