Ich versuche, Python zu lernen (mit wenig Programmiererfahrung) und steckte auf dieses Problem auf Codeacademy über Methoden von einer Basisklasse nach dem Überschreiben in einer Unterklasse stecken.Python: Problem mit der Vererbung und Super Call
Dies ist der Code:
class Employee(object):
"""Models real-life employees!"""
def __init__(self, employee_name):
self.employee_name = employee_name
def calculate_wage(self, hours):
self.hours = hours
return hours * 20.00
class PartTimeEmployee(Employee):
def calculate_wage(self, hours):
self.hours = hours
return hours * 12.00
def full_time_wage(self, hours):
super(PartTimeEmployee, self).calculate_wage(self, hours)
milton = PartTimeEmployee("Milton")
print(milton.full_time_wage(10))
Leider ist die folgende wirft:
Traceback (most recent call last):
File "python", line 20, in <module>
File "python", line 17, in full_time_wage
TypeError: calculate_wage() takes exactly 2 arguments (3 given)
Also irgendwo eine Variable zu viele übergeben wird, aber ich kann nicht herausfinden, wo.
Update 1:
die Traceback Anruf Gelöst von 17.
jedoch nur wenige Stunden auf Linie, die, mein Ergebnis jetzt print(milton.full_time_wage(10))
Aufruf gibt mir None
statt 200, wie ich erwarten würde. Kann mir jemand vielleicht erklären, was ich falsch mache?
return super(PartTimeEmployee, self).calculate_wage(hours)
Der Methodenaufruf selbst schon passiert:
Dank
Danke, dass Pflege Meldung des Fehlers nahm. Aus irgendeinem Grund wird dies - für den obigen Aufruf "print (milton.full_time_wage (10))" - "None" statt "20" zurückgeben? – mor3dr3ad