代码如下
#!/usr/bin/python
#coding:utf-8
class A():
def __init__(self,a,b):
self.a = a
self.b = b
print self.a
print self.b
class B(A):
def __init__(self,m,g):
super(B, self).__init__(m,g)
self.m = m
self.g = g
print self.m
print self.g
class C(A):
pass
if __name__ == '__main__':
#mm = C('a','b')
B('aa','bb')
执行是出现的错误
Traceback (most recent call last):
File "C:\Users\quan\Desktop\super.py", line 25, in <module>
B('aa','bb')
File "C:\Users\quan\Desktop\super.py", line 13, in __init__
super(B, self).__init__()
TypeError: must be type, not classobj
super只能用于python的新类中,如果基类是经典类,则会报这个错。
新类和经典类又是什么呢?
新类:
所有类都必须要有继承的类,如果什么都不想继承,就继承到object类。
经典类:
什么都不用继承的类,如上面的代码就是经典类。所以报错。
上面代码正确写法只要在
class A(object)
问题就解决了