#! python3
#-*- coding: utf-8 -*-
'''
Created on 2019年1月29日
@author: Administrator
'''
from pprint import pprint
class base1():
def __init__(self,value):
print('base1')
self.value = value
# class base2():
# def __init__(self,value):
# print('base2')
# self.value = value
class subbase1(base1):
def __init__(self,value1):
print('subbase1')
super().__init__(value1,2)
class subbase2(base1):
def __init__(self,vaule1,value2):
print('subbase2')
print(vaule1)
super().__init__(value2)
class subbase1base2(subbase1,subbase2):
def __init__(self,value,value1):
print('subbase1base2')
super().__init__(value)
if __name__ == '__main__':
pass
# 在python中,每个类都有一个mro的类方法,通过mro,python巧妙地将多继承的图结构,转变为list的顺序结构。
# super在继承体系中向上的查找过程,变成了在mro中向右的线性查找过程,任何类都只会被处理一次
pprint(subbase1base2.mro())
ins = subbase1base2(2,1)
'''
python3 多重继承 类初始化函数调用顺序 super解决重复初始化问题(钻石继承)
最新推荐文章于 2026-06-25 11:49:41 发布
本文探讨了Python3中多重继承的类初始化函数调用顺序,特别是钻石继承结构下的问题。通过示例解释了如何使用super()方法避免子类重复初始化,有效地管理类层次结构。

1711

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



