Advanced Python syntax - MRO related to multiple inheritance - multiple inheritance order (4.5.1)

@

1. Description

Magic method class __mro__
view his parent call sequence
also call the constructor of the parent class when using super call, there are C3 algorithm supports, will not repeat the call the same ancestor class

2. Code


class Parent(object):
    def __init__(self,name,*args,**kwargs):
        print("Parent的init开始调用")
        self.name = name
        print("Parent的init结束调用")


class Son1(Parent):
    def __init__(self,name,gender,*args,**kwargs):
        print("Son1的init开始调用")
        self.gender = gender
        super().__init__(name,*args,**kwargs)
        print("Son1的init结束调用")



class Son2(Parent):
    def __init__(self,name,age,*args,**kwargs):
        print("Son2的init开始调用")
        self.gender = age
        super().__init__(name,*args,**kwargs)
        print("Son2的init结束调用")



class GrandSon(Son1,Son2):
    def __init__(self,name,gender,age):
        print("GrandSon的init开始调用")
        super().__init__(name,age,gender)
        print("GrandSon的init结束调用")

print(GrandSon.__mro__)

About the Author

Personal blog site
personal GitHub address
individual public number:
Here Insert Picture Description

Guess you like

Origin www.cnblogs.com/simon-idea/p/11411755.html