我的代码有问题。我试图创建一个继承父类的属性和方法的子类,但它不起作用。以下是我目前掌握的情况:
class Employee(object):
def __init__(self, emp, name, seat):
self.emp = emp
self.name = name
self.seat = seat
下面的代码块有问题-子类。
我必须再次创建__init__
吗?以及如何为子类创建新属性。从阅读问题中,听起来子类中的__init__
将重写父类-如果我调用它来定义另一个属性,这是真的吗?
class Manager(Employee):
def __init__(self, reports):
self.reports = reports
reports = []
reports.append(self.name) #getting an error that name isn't an attribute. Why?
def totalreports(self):
return reports
我希望Employee类中的名称在报告列表中。
例如,如果我有:
emp_1 = Employee('345', 'Big Bird', '22 A')
emp_2 = Employee('234', 'Bert Ernie', '21 B')
mgr_3 = Manager('212', 'Count Dracula', '10 C')
print mgr_3.totalreports()
我想要reports = ['Big Bird', 'Bert Ernie']
但它不起作用
您需要在适当的位置运行超类的init(),然后捕获(子类未知的)参数并将它们传递给:
您从未调用父类的
__init__
函数,在该函数中定义了这些属性:为此,您必须修改
Employee
类的__init__
函数并为参数提供默认值:此外,此代码根本不起作用:
reports
的作用域仅在__init__
函数内,因此它将是未定义的。你必须使用self.reports
,而不是reports
。至于你的最后一个问题,你的结构并不能让你做到这一点。我将创建第三个类来处理员工和经理:
您必须通过将员工添加到适当的列表对象来将其添加到业务中。
相关问题 更多 >
编程相关推荐