【发布时间】:2019-04-19 16:31:31
【问题描述】:
当子类从超类继承时,子类必须具有超类具有的所有参数吗?例如:“Vehicle(color,wheels,size)”是超类。除了“大小”属性/参数之外,我可以有一个从 Vehicle 继承所有内容的子类吗?
这是父类:
class LagStudent:
def __init__(self, name, dept, cgpa, is_a_scholar):
self.name = name
self.dept = dept
self.cgpa = cgpa
self.is_a_scholar = is_a_scholar
以下是两个子类:
class CovStudent(LagStudent):
def __init__(self, name, dept, cgpa, is_a_scholar, honours):
super().__init__(name, dept, cgpa, is_a_scholar)
self.honours = honours
class OxStudent(CovStudent):
def __init__(self, name, dept, cgpa, is_a_scholar):
super().__init__(name, dept, cgpa, is_a_scholar)
当我运行以下...
student4 = OxStudent("Mark", "Mathematics", 4.62, True)
print(student4.is_a_scholar)
它给出错误:
TypeError: init() 缺少 1 个必需的位置参数:'honours'
【问题讨论】:
-
问题不清楚:子类方法应该如何表现?他们不能调用父
Vehicle方法,因为他们需要size作为参数。 -
-
是的,当然你可以。问题是,你应该吗?
-
为什么
OxStudent在这里继承CovStudent而不是LagStudent?
标签: python python-3.x inheritance