Python中父类子类的继承问题

出现如上的错误,不明白原因,经过查找之后发现有个新类、经典类的问题

那什么是新类?什么是经典类呢?

所谓新类就是所有类都必须要有继承的类,如果什么都不继承,那就继承到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方法中的参数名字相互对应

猜你喜欢

转载自blog.csdn.net/dashan8608/article/details/85079340
今日推荐