多層繼承與多重繼承


概述

Python3中只有新式類,所以他的多重繼承采用C3搜索也可以把它看成就近搜索。

詳解

多重繼承采用 就近原則 搜索,class C4(C1,C2,C3) 先檢索自身后檢索C1、C2、C2的父類(甚至是父類的父類)、C3

 

 

代碼

示例1

class C0:
    name = 'C0'
    def c(self):
        pass
class C1:
    num = 1
    def c1(self):
        pass
class C2(C0):
    num = 2
    def c2(self):
        pass
class C3:
    name = 'C3'
    def c3(self):
        pass
class C4(C1,C2,C3):
    pass
c4 = C4()
print(c4.name)
print(c4.num)

示例2

class NewStyleClassA(object):
    var = 'New Style Class A'

#多層繼承
class NewStyleClassB(NewStyleClassA):
    pass


class NewStyleClassC(object):
    var = 'New Style Class C'

#多重繼承,采用就近原則
class SubNewStyleClass(NewStyleClassB, NewStyleClassC):
    pass


if __name__ == '__main__':
    print(SubNewStyleClass.mro())
    print(SubNewStyleClass.var)

[<class '__main__.SubNewStyleClass'>, <class '__main__.NewStyleClassB'>, <class '__main__.NewStyleClassA'>, <class '__main__.NewStyleClassC'>, <type 'object'>]
New Style Class A

 

參考鏈接

https://www.cnblogs.com/blackmatrix/p/5630515.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM