Python 2.7超级错误

Python 2.7 super error

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
6
7
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)时,它显示一条错误消息,如下所示:

1
2
3
4
5
6
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
>>>


根据关于super(..)函数的python 2.7文档:

Note: super() only works for new-style classes.

你的B班是老式的。因此,将class B:改为class B(object)解决了这个问题。下面是一个稍微经过编辑的示例:

1
2
3
4
5
6
7
8
9
10
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