这是我的家庭作业:
问题的第一部分是定义继承自
Worker
的子类Employee
,并包含一个属性,该属性引用另一个作为工作者经理的员工。您应该定义一个返回工作人员的方法get_manager
。经理。例:
worker = Worker("Fred", 52000, myboss)
问题的第二部分是定义继承自
Executive
的子类Employee
,并包含一个引用年度奖金的属性。您应该覆盖工资方法,根据他/她的工资和奖金计算高管薪酬。您应该在
Employee
类的工资方法定义中使用Executive
的工资方法。例:
executive = Executive("Kerry", 520000, 1040000)
我提交了以下代码,但我被告知“你的高管薪水错了”。我无法看到错误是什么。我该如何做对?
class Employee(object):
def __init__(self, name, salary):
self._name = name
self._salary = salary
def my_name(self):
return self._name
def wage(self):
return self._salary/26 # fortnight pay
class Worker(Employee):
def __init__(self, name, salary, manager):
Employee.__init__(self, name, salary)
self._manager = manager
def getManager(self):
return self._manager
class Executive(Employee):
def __init__(self, name, wage, yearlyBonus):
Employee.__init__(self, name, salary)
self._yearlyBonus = yearlyBonus
def wage(self):
return Employee.wage(self)
答案 0 :(得分:2)
您可以使用super()
来调用当前类的超类:
def __init__(self, name, salary, manager):
super(Worker, self).__init__(name, salary)
self._manager = manager
答案 1 :(得分:0)
你也可以使用:
class Worker(Employee):
def __init__(self, name, salary, manager):
Employee.__init__(self, name, salary)
self._manager = manager
如果您碰巧继承了旧类,这也适用于旧式类。
答案 2 :(得分:0)
两种方法super(parent, self).method(...)
方法或parent.method(self,...)
大致相同。在这两种情况下,它都允许您从父母调用method
并将其应用于孩子。
此方法可以是__init__
:初始化子实例(如其父实例)始终是个好主意:
class Worker(Employee):
def __init__(self, *args):
Employee.__init__(self, ...)
finish_the_initialization_of_worker
但该方法可以是任何内容,例如wage
class Executive(Employee):
def wage(self):
return Employee.wage(self) + self._yearly_bonus