Python 2.7超级错误

时间:2014-08-25 13:18:03

标签: python python-2.7 typeerror

我在python 2.7中创建了一个类。然后我创建了我创建的类的子类。为了定义子类的 init ,我使用了super函数,但是当我在python上运行它时,它给出了一条错误消息:

class B:
    def __init__(self, l):
       self.p = l
       self.d = len(l)
class C(B):
    def __init__(self, l):
       super(C,self).__init__(l)

当我为我输入的某个变量l运行C(l)时,它显示了一条错误消息,如下所示:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "class_sample.py", line 12, in __init__
super(C,self).__init__(l)
TypeError: must be type, not classobj
>>>

1 个答案:

答案 0 :(得分:1)

根据python 2.7 documentation on super(..) function

  

注意: super()仅适用于new-style classes

你的B课程是旧式课程。因此,将class B:更改为class B(object)可以解决问题。这是一个略有编辑的例子:

class B(object):
    def __init__(self, l):
       self.p = l
       self.d = len(l)
class C(B):
    def __init__(self, l):
       super(C,self).__init__(l)

c = C([])
print c.d