出现如上的错误,不明白原因,经过查找之后发现有个新类、经典类的问题
那什么是新类?什么是经典类呢?
所谓新类就是所有类都必须要有继承的类,如果什么都不继承,那就继承到object类
所谓经典类就是什么都不用继承的类,图中的Father类就是一个经典类。
修改如上的错误只需要将Father类继承object类即可。
这样就不会报错。
其次在用super继承init方法时,子类的参数应该要比父类的参数个数要多。super显示的继承父类的init方法后,会先调用父类的init方法。
class Father(object):
def __init__(self,name,age):
a=10
self.a=a
self.name=name
self.age=age
print(self.a)
class Child(Father):
def __init__(self):
super(Child,self).__init__()
print('jjjj')
d=Child()
super(Child,self).__init__()
TypeError: __init__() takes exactly 3 arguments (1 given)
class Father(object):
def __init__(self,name,age):
a=10
self.a=a
self.name=name
self.age=age
print(self.a)
class Child(Father):
def __init__(self):
super(Child,self).__init__(name,age)
print('jjjj')
d=Child()
super(Child,self).__init__(name,age)
NameError: global name 'name' is not defined
class Father(object):
def __init__(self,name,age):
a=10
self.a=a
self.name=name
self.age=age
print(self.a)
class Child(Father):
def __init__(self,name,age):
super(Child,self).__init__(name,age)
print('jjjj')
d=Child(1,2)
10
jjjj
super继承父类的init方法时,一定要把父类的参数写上,其次子类的参数也要包括父类的参数,子类的参数个数大于等于父类的参数个数 并且要父类的init方法中的参数名字相互对应