Python super()引发TypeError

问题:

在Python 2.5.2中,以下代码引发了一个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(object)替换class X,它将会工作。这是什么解释?

回答:

原因是super()只适用于新式的类,其中2.x系列意味着从对象延伸。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Python super() raises TypeError

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 59 = 68