python 钻石继承无参数传递
# __init__() 无参数钻石继承
class Base(object):
def __init__(self):
print ("Base init")
class Medium1(Base):
def __init__(self):
super(Medium1, self).__init__()
print("Medium1 init")
class Medium2(Base):
def __init__(self):
super(Medium2, self).__init__()
print("Medium2 init")
class Leaf(Medium1, Medium2):
def __init__(self):
print(Leaf.mro())
super(Leaf, self).__init__()
print("Leaf init")
leaf = Leaf()
python 钻石继承参数传递
# __init__() 传递参数钻石继承
class A(object):
def __init__(self, name, age):
print('A Begin')
self.name = name
self.age = age
self.sex = "male"
print('A End')
class B(A):
def __init__(self, name, age, height, color):
print('B Begin')
self.color = color
super(B, self).__init__(name, age, height)
print('B End')
class C(A):
def __init__(self, name, age, height):
print('C Begin')
self.height = height
super(C, self).__init__(name, age)
print('C End')
class D(B, C):
def __init__(self, name, age, height, color, weight):
print('D Begin')
self.weight = weight
super(D, self).__init__(name, age, height, color)
print('D End')
def show(self):
print("name",self.name)
print("age",self.age)
print("height",self.height)
print("colro",self.color)
print("weight",self.weight)
print("sex",self.sex)
if __name__ == "__main__":
xm = D(name='xiaoming', age=18, height='170cm',color= 'White',weight= '70kg')
xm.show()
继承关系

__init__

注意继承关系是钻石形状
但是init关系是 “顺序关系”
python 钻石继承参数传递
class A():
def __init__(self, age, **kwargs):
print("Eneter A Begin")
self.age = age
super(A, self).__init__(**kwargs)
self.sex = 'male'
print("Eneter A End")
class B(A):
def __init__(self, name, **kwargs):
print("Enter B Begin")
self.name = name
super(B, self).__init__(**kwargs)
print("Enter B End")
class C(A):
def __init__(self,height, **kwargs):
print("Enter C Begin")
self.height = height
super(C, self).__init__(**kwargs)
print("Enter C End")
class D(C, B):
def __init__(self, color, weight, **kwargs):
print("D info", self)
print(D.mro())
print("Enter D Begin")
self.color = color
self.weight = weight
super(D, self).__init__(**kwargs)
print("Enter D End")
def print_show(self):
print("name ",self.name)
print("age ",self.age)
print("height ",self.height)
print("color ",self.color)
print("weight ",self.weight)
print("sex", self.sex)
'''
需要确定D及D的父类参数
'''
xm = D(name='xiaoming', age=18, height='170cm',color= 'White',weight= '70kg')
xm.print_show()
本文探讨了Python中钻石继承模式下,无参数和带参数初始化函数的用法,重点讲解了`__init__()`方法在不同类结构中的调用顺序,以及如何在参数传递中实现复杂继承关系。通过实例演示了如何创建并操作一个带有钻石继承的类结构,包括`Leaf`类的实例化过程。
1791

被折叠的 条评论
为什么被折叠?



