如何以及何时在Python3中实例化父类?

2024-04-25 11:32:24 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python3中,我假设创建一个具有父类的类会导致父类被实例化。这个代码显示它不是那样工作的。你知道吗

class AClass:
    def __init__(self):
    print("make A")
    self.val = True
def f(self):
    return self.val

class BClass(AClass):
    def __init__(self):
        print("make B")
        self.val = False
    def g(self):
        return self.val

b = BClass()
print(b.f())
print(b.g())

输出为

make B
False
False

输出显示未调用AClass.__init__(self),函数f使用在BClass中创建的自值。如果AClass实例存在,那么g函数将返回True。你知道吗

我正在学习Python,我发现这种行为非常违反直觉。我想要的是在继承层次结构的每个级别上都有一个self实例变量。这在Python3中不正常吗?如果继承树中有self个实例,那么方法名会遵循常规继承规则吗?Python是否做了其他事情来实现我想要的东西?你知道吗


Tags: 实例selffalsetruemakereturninitdef
1条回答
网友
1楼 · 发布于 2024-04-25 11:32:24

要调用要使用的父级的init函数:

Super(self, BClass).__init__()

基本上是调用当前实例的父类(从而发送类的实例类型和当前实例化的类self)。你知道吗

我也不觉得这有悖常理,你重写了父函数的init函数。你知道吗

相关问题 更多 >

    热门问题