2013-10-05 6 views
0

Он работает для Employee и calculate_wage, но возвращает ошибку, когда я пытаюсь создать экземпляр PartTimeEmployee и вызывается метод calculate_wage родительского класса PartTimeEmployee.Зачем нужен следующий код?

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 __init__(self, employee_name): 
     self.employee_name = employee_name 
    def calculate_wage(self, hours): 
     self.hours = hours 
     return hours * 12.00 
    def full_time_wage(self, hours): 
     return super(PartTimeEmployee, self).calculate_wage(self, hours) 

milton = PartTimeEmployee("Milton") 
print (milton.full_time_wage(10)) 
+1

«но возвращает ошибку» ... увы, сообщение об ошибке кажется секретом .... – glglgl

+0

Можете ли вы, чтобы мой ответ был правильным? –

ответ

5
return super(PartTimeEmployee, self).calculate_wage(self, hours) 

неправильно, оно должно быть

return super(PartTimeEmployee, self).calculate_wage(hours) 

И в следующий раз: Кроме того, опубликовать сообщение об ошибке вы видите.

+0

Почему не требуется «я»? Он определен в классе Employee как calculate_wage (self, hours), я думал, что должен скопировать его. – user2742080

+0

Потому что 'self' происходит от того, что перед вызовом метода (' self' устанавливается в 'foo', когда вы делаете' foo.calculate_wage (hours) ') –

+0

Можете ли вы, если это так, отметьте мой ответ правильно? –

Смежные вопросы