当子类从超类继承时,子类必须具有该超类所具有的所有参数吗?E、 g.:“Vehicle(colour,wheels,size)”是超类。我可以有一个子类继承除“size”属性/参数之外的所有内容吗?你知道吗
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个必需的位置参数:“Honors”
我们定义Vehicle超类如下,Bicycle子类如下
在这里您可以看到Cycle子类只接受
colors
和wheels
并将其传递给超类,并且具有硬编码的size=small
属性。子类构造函数调用超类的构造函数要检查发生了什么,我们可以尝试以下操作:
更新 基于OP不想拥有size属性的注释,您可以为超类中的size属性指定一个默认值,例如
size=None
,并且在实例化子类时不需要传递它。你知道吗你可以这样称呼它
您可以看到
size
的值是None
,这是我们选择的默认值,因为我们没有显式地传递size
,如果我们传递它,我们会得到size
属性的值子类的
__init__
方法的签名当然可以与其超类不同。它只需要调用其超类的__init__
方法,该方法需要:这将输出:
相关问题 更多 >
编程相关推荐