pythonマルチ継承super問題
17812 ワード
# coding=utf-8
# https://www.jianshu.com/p/3b7ebe0389e4
#
class FatFather(object):
def __init__(self, name, *args, **kwargs):
print()
print("=============== FatFather ========================")
print('FatFather init ')
self.name = name
print(' FatFather name %s' % self.name)
print('FatFather init ')
print()
print("=============== FatFather ========================")
# FatFather
class FatBoss(FatFather):
def __init__(self, name, hobby, *args, **kwargs):
print()
print("=============== FatBoss ========================")
print(' !')
# super().__init__(name)
## ,
super().__init__(name, *args, **kwargs)
print("%s %s" % (name, hobby))
print()
print("=============== FatBoss ========================")
# FatFather
class FatBossWife(FatFather):
def __init__(self, name, housework, *args, **kwargs):
print()
print("=============== FatBossWife ========================")
print(' ! ')
# super().__init__(name)
## ,
super().__init__(name, *args, **kwargs)
print("%s %s" % (name, housework))
print()
print("=============== FatBossWife ========================")
# FatBoss FatBossWife
class FatBossGril(FatBoss, FatBossWife):
def __init__(self, name, hobby, housework):
print(' ! , ')
super().__init__(name, hobby, housework)
def main():
print(" FatBossGril MRO")
print(FatBossGril.__mro__) #
print()
print("=========== MRO super =============")
gril = FatBossGril(" ", " ", " ")
if __name__ == "__main__":
main()
"""
FatBossGril MRO
(, , , , )
=========== MRO super =============
! ,
=============== FatBoss ========================
!
=============== FatBossWife ========================
!
=============== FatFather ========================
FatFather init
FatFather name
FatFather init
=============== FatFather ========================
=============== FatBossWife ========================
=============== FatBoss ========================
"""
class Car:
def __init__(self,name,age,**kwargs):
self.name = name
self.age = age
print(self.name,self.age,"car")
def say(self):
print("hello car")
class Truck:
def __init__(self,name,color,*args,**kwargs):
self.name = name
self.age = color
print(self.name,self.age,"truck")
def say(self):
print("hello truck")
class DF(Truck,Car):
def __init__(self,name,color,age,*args,**kwargs):
self.name = name
self.age = color
self.name = age
super().__init__(name,color,age)
print(DF.__mro__)
if __name__ == '__main__':
DF("dongfeng","red",7).say()
"""
dongfeng red truck
(, , , )
hello truck
"""
@property 、
__getattr__ __getattribute__ 、
__new__ __init__、
https://blog.csdn.net/sunt2018/article/details/88696305
、 、 、 、 。
https://blog.csdn.net/sunt2018/article/details/86571961
https://blog.csdn.net/sunt2018/article/details/86570014