>> class Y(X): -6ren">
gpt4 book ai didi

Python super() 引发 TypeError

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

在 Python 2.5 中,以下代码引发 TypeError:

>>> class X:
def a(self):
print "a"

>>> class Y(X):
def a(self):
super(Y,self).a()
print "b"

>>> c = Y()
>>> c.a()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in a
TypeError: super() argument 1 must be type, not classobj

如果我将 class X 替换为 class X(object),它将起作用。对此有何解释?

最佳答案

原因是super()仅适用于 new-style classes ,在 2.x 系列中意味着从 object 扩展:

>>> class X(object):
def a(self):
print 'a'

>>> class Y(X):
def a(self):
super(Y, self).a()
print 'b'

>>> c = Y()
>>> c.a()
a
b

关于Python super() 引发 TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/489269/

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