Python inherits initialization problem

  1. If the child class does not define its own initialization function to initialize the parent class will be called by default; however, if you instantiate an object subclasses, you can only pass initialization parameters corresponding to the parent class, or an error occurs.

Child no initialization function

class Parent:
    def __init__(self,name):
        self.name = name
        print("初始化爸爸",name)
    def f(self):
        print("爸爸的f")
class Child(Parent):
    def ff(self):
        print("儿子的ff")
b=Child('儿子建立对象')
b.ff()


Output:

初始化爸爸 儿子建立对象
儿子的ff
  1. If a subclass defines its own initialization function, without showing the initialization function calls the parent class in the subclass, the parent class's property will not be initialized.

Child initialization function

class Parent:
    def __init__(self,name):
        self.name = name
        print("初始化爸爸",name)
    def f(self):
        print("爸爸的f")
class Child(Parent):
    def __init__(self):
        # self.name=name
        print("初始化儿子")
    def ff(self):
        print("儿子的ff")
b=Child()
b.ff()
print(b.name)

Output:

初始化儿子
儿子的ff
AttributeError: 'Child' object has no attribute 'name'
  1. If a subclass defines its own initialization function in a subclass display call the parent class, subclass and superclass properties are initialized.
class Parent:
    def __init__(self,name):
        self.name = name
        print("初始化爸爸",name)
    def f(self):
        print("爸爸的f")
class Child(Parent):
    def __init__(self):
        super(Child, self).__init__("来自儿子")
        print("初始化儿子")
    def ff(self):
        print("儿子的ff")
a=Parent("来自父亲")
b=Child()
print(b.name)

Output:

初始化爸爸 来自父亲
初始化爸爸 来自儿子
初始化儿子
来自儿子
Published 16 original articles · won praise 0 · Views 954

Guess you like

Origin blog.csdn.net/qq_44157281/article/details/97248206