Python 继承调用

Python 继承调用,python,class,inheritance,Python,Class,Inheritance,这是我的家庭作业: 问题的第一部分是定义子类Worker,该子类继承自Employee,并包含一个属性,该属性引用作为该员工经理的另一名员工。您应该定义一个方法get\u manager,该方法返回工人经理 示例: worker=worker(“弗雷德”,52000,我的老板) 问题的第二部分是定义子类Executive,该子类继承自Employee,并包含一个指向年度奖金的属性 您应该覆盖工资方法,根据高管的工资和奖金计算高管薪酬。在高管类的工资方法定义中,您应该使用员工的工资方法 示例: e

这是我的家庭作业:

问题的第一部分是定义子类
Worker
,该子类继承自
Employee
,并包含一个属性,该属性引用作为该员工经理的另一名员工。您应该定义一个方法
get\u manager
,该方法返回工人经理

示例:
worker=worker(“弗雷德”,52000,我的老板)

问题的第二部分是定义子类
Executive
,该子类继承自
Employee
,并包含一个指向年度奖金的属性

您应该覆盖工资方法,根据高管的工资和奖金计算高管薪酬。在
高管
类的工资方法定义中,您应该使用
员工
的工资方法

示例:
executive=executive(“克里”,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)
可以使用调用当前类的超类:

def __init__(self, name, salary, manager):
    super(Worker, self).__init__(name, salary)
    self._manager = manager
您还可以使用:

class Worker(Employee):
    def __init__(self, name, salary, manager):
        Employee.__init__(self, name, salary)
        self._manager = manager

这也适用于旧式类,如果您碰巧继承了一个。

这两种方法
super(parent,self)。method(…)
方法或
parent.method(self,…)
大致相当。在这两种情况下,它都允许您从父级调用
方法
,并将其应用于子级

此方法可以是
\uuuu init\uuuuu
:像其父实例一样初始化子实例总是一个好主意:

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

这是可行的,但我现在明白了,高管的工资方法应该称为员工的工资方法。我试过Employee.wage(self),但评论是一样的。工资(自我):返回雇员。工资(自我)但是我给你的工资对一个主管来说是错误的。