gpt4 book ai didi

python - 如何初始化基(超)类?

转载 作者:IT老高 更新时间:2023-10-28 21:06:01 27 4
gpt4 key购买 nike

在 Python 中,假设我有以下代码:

class SuperClass(object):
def __init__(self, x):
self.x = x

class SubClass(SuperClass):
def __init__(self, y):
self.y = y
# how do I initialize the SuperClass __init__ here?

如何在子类中初始化SuperClass __init__?我正在关注 Python 教程,但它没有涵盖这一点。当我在谷歌上搜索时,我发现了不止一种方法。处理此问题的标准方法是什么?

最佳答案

Python(直到第 3 版)支持“旧式”和新式类。新式类派生自 object 并且是您正在使用的,并通过 super() 调用它们的基类,例如

class X(object):
def __init__(self, x):
pass

def doit(self, bar):
pass

class Y(X):
def __init__(self):
super(Y, self).__init__(123)

def doit(self, foo):
return super(Y, self).doit(foo)

因为 python 知道旧式和新式类,所以调用基方法有不同的方法,这就是为什么您找到了多种方法。

为了完整起见,旧式类使用基类显式调用基方法,即

def doit(self, foo):
return X.doit(self, foo)

但既然你不应该再使用旧式了,我不会太在意这个。

Python 3 只知道新式类(无论你是否从 object 派生)。

关于python - 如何初始化基(超)类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3694371/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com