• 菱形继承


    # ### 菱形继承 
    '''
    	Human
    	
    Man       Woman	
    
       Children
    '''
    class Human():
    	pty = 111
    	def feelT(self):
    		print("远古人类天热了,脱毛1")
    		print(self.pty)
    		print("远古人类天冷了,长毛2")
    	
    class Man(Human):
    	pty = 222
    	def feelT(self):
    		print("现代男性天热了,开空调3")
    		super().feelT()
    		print("现代男性天冷了,也开空调4")
    	
    class Woman(Human):
    	pty = 333
    	def feelT(self):
    		print("现代女性天热了,穿比基尼5")
    		super().feelT()
    		print("现代女性天冷了,也穿比基尼,要风度,不要温度6")
    	
    class Children(Man,Woman):
    	pty = 444
    	def feelT(self):
    		print("小孩天热了,他就吃冰棍哭7")
    		super().feelT()
    		print("小孩天冷了,他就吃奶奶哭8")
    
    obj = Children()
    obj.feelT()
    # 731211
    # 73511112
    '''
    # mro列表 :通过c3算法,把所有的继承关系按照列表的顺序呈现.
    # 语法:
    类.mro() => 继承顺序列表
    [
    <class '__main__.Children'>, 
    <class '__main__.Man'>, 
    <class '__main__.Woman'>, 
    <class '__main__.Human'>, 
    <class 'object'>
    ]
    super 就是默认按照mro列表的顺序,依次调用
    用于解决多继承调用顺序混乱的问题
    '''
    lst = Children.mro()
    print(lst)
    
    
    # 判断是否是子父关系 [有血缘关系即可] issubclass
    res = issubclass(Children,Man)
    res = issubclass(Children,Human)
    # 满足一个条件,即返回真
    res = issubclass(Children,(Man,Woman))
    print(res)
    
    
    # 判断对象的类型 [有血缘关系即可] isinstance
    res = isinstance(obj,Children)
    res = isinstance(obj,Man)
    res = isinstance(obj,(Human,Woman))
    print(res)
    
    
    
    
    
     
    

      

  • 相关阅读:
    Standalone集群搭建和Spark应用监控
    日志信息和浏览器信息获取及数据过滤
    Spark词频前十的统计练习
    Spark-local本地环境搭建
    冒泡排序java
    java反编译
    修改系统环境变量 cmd命令
    java单元测试(Junit)
    spring改版官网下载jar包, 源代码和文档
    打开 chm 帮助文件显示空白及解决方法
  • 原文地址:https://www.cnblogs.com/huangjiangyong/p/10920593.html
Copyright © 2020-2023  润新知