gpt4 book ai didi

python - 在 python 中使用继承

转载 作者:太空狗 更新时间:2023-10-30 01:42:55 25 4
gpt4 key购买 nike

这是我的家庭作业,我之前在网站上看到它,但看起来它没有解决,我收到的错误消息与之前问这个问题的人不同。

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

例子:

worker = Worker("Fred", 52000, myboss)

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

您应该覆盖工资方法以根据他/她的薪水和奖金计算高管薪酬。 Executive类的工资方法定义中应该使用Employee的工资方法。

例子:

executive = Executive("Kerry", 520000, 1040000)

我的代码写在下面,我收到的错误消息是:'Employee.init(self, name, salary)' 行中的'global name 'salary' is not defined' for class Executive(它适用于 Worker 类)。为什么会出现该错误,我该如何解决?

感谢您的帮助!

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)

最佳答案

错误很明显。 salary 未在 Executive__init__ 方法中定义。

您使用 wage 作为 __init__ 的参数,但是在调用父类的 __init__ 时使用 salary,所以你应该坚持使用一个变量名:

class Executive(Employee):
def __init__(self, name, salary, yearlyBonus):
Employee.__init__(self, name, salary)

此外,您可以使用 *args 来绕过每次输入所有这些参数:

class Executive(Employee):
def __init__(self, *args, yearlyBonus):
super(Executive, self).__init__(*args)

使用 super() 而不是调用父类的 __init__ 方法。它使多重继承更容易一些。

关于python - 在 python 中使用继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16128833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com