gpt4 book ai didi

python - 为什么 Python 中的基类需要扩展对象?

转载 作者:太空宇宙 更新时间:2023-11-04 05:56:44 25 4
gpt4 key购买 nike

如果我想使用 super,我正在寻找一个清晰的解释,说明为什么我的基类必须扩展 object

# Without extending object, this code will fail with 
# TypeError: must be type, not classobj
class A(object):
def __init__(self):
print "Called A.__init__"

class AChild(A):
def __init__(self):
super(AChild, self).__init__()
print "Called AChild.__init__"

AChild()

这按预期工作,但如果您删除 object,它会抛出上述异常。我正在使用 Python 2.7.8。随时将我链接到任何相关问题,但我没有通过快速搜索找到好的答案

最佳答案

这是因为通过扩展 object 您正在使用支持 super 使用所需的新样式类,它是在将新样式类引入 Python 的同时添加的.

根据这个answer中的信息,旧式类有一个简单的深度优先方法解析顺序,所以不需要这个函数,这可能就是为什么它不是然后包括在内。但是,在添加多重继承后,super 现在是推荐的调用父类(super class)的方式,因为 MRO 更复杂。

关于python - 为什么 Python 中的基类需要扩展对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27393377/

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