首页 > 解决方案 > 为什么我没有在其派生类的实例中初始化继承类实例属性失败时收到错误消息?

问题描述

当我初始化 B 类的实例时,它不应该因为未尝试在 A 类的init方法中为 x 属性提供值而引发错误吗?如果 x 未提供值,我想引发错误怎么办?

例子:

class A:

    def __init__(self, x):
        self.x = x

class B(A):

    def __init__(self, y):
        self.y = y

z = B(4) #Shouldn't I be getting an error for not attempting to 
         #initialize x from the base class?

标签: pythonpython-3.xinheritance

解决方案


不,你正在做的是初始化 y,因为在你的 B 类的初始化中,你没有调用你的父母构造函数

super.__init__()

如果你想同时使用 B 中的 x,y 并且必须从 B 中初始化 x,你应该使用这个:

class A:
    def __init__(self, x):
        self.x = x

class B(A):  
    def __init__(self, x, y):
        super().__init__(x)
        self.y = y

推荐阅读