【发布时间】:2013-04-21 07:15:44
【问题描述】:
这是我的家庭作业,我之前在网站上看到过它,但看起来它没有解决,而且我收到的错误消息与以前提出该问题的人不同。
问题的第一部分是定义子类 Worker,它继承自 Employee 并包含一个属性,该属性引用另一个员工,该员工是该员工的经理。您应该定义一个方法 get_manager 来返回工人的经理。
例子:
worker = Worker("Fred", 52000, myboss)
问题的第二部分是定义继承自Employee 的子类Executive 并包含一个引用年度奖金的属性。
您应该覆盖工资方法以根据他/她的薪水和奖金计算高管薪酬。应该在Executive类的工资方法定义中使用Employee的工资方法。
例子:
executive = Executive("Kerry", 520000, 1040000)
我的代码写在下面,我得到的错误消息是:'global name 'salary' is not defined' in line 'Employee.init(self, name, Salary)' for class行政人员(适用于工人阶级)。为什么会出现该错误,我该如何解决?
感谢您的帮助!
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)
【问题讨论】:
-
您在计算
Executive的工资时忘记考虑self._yearlyBonus -
我更正了我的代码,但我仍然收到错误消息“您的主管工资有误”...
-
@kate88 这是实际的错误消息吗?它来自哪里? yearlyBonus 不应该一年只用一次还是也除以 26?
-
谢谢托拜厄斯!我只需要将它除以 26!
-
感谢大家的帮助,代码现在运行良好!
标签: python class inheritance