Python 類的多重繼承 深度優先 廣度優先

2021-08-13 16:32:40 字數 1748 閱讀 2281

一、多重繼承

1、經典類 vs 新式類

python 2.x中預設都是經典類,只有顯式繼承了object才是新式類

python 3.x中預設都是新式類,不必顯式的繼承object

2、多重繼承

python中乙個類可以同時繼承多個類

class 類名(父類1,父類2,...)  

類體

二、深度優先

1、經典類採用深度優先搜尋

class p1:   

def foo(self):

print 'p1-foo'

class p2 :

def foo(self):

print 'p2-foo'

def bar(self):

print 'p2-bar'

class c1 (p1,p2):

pass

class c2 (p1,p2):

def bar(self):

print 'c2-bar'

class d(c1,c2):

pass

d = d()

d.foo() # 輸出 p1-foo

d.bar() # 輸出 p2-bar

2、說明:

例項d呼叫foo()時,搜尋順序是 d => c1 => p1

例項d呼叫bar()時,搜尋順序是 d => c1 => p1 => p2

經典類的搜尋方式:從左到右,深度優先

三、廣度優先

1、新式類採用廣度優先搜尋

class p1(object):   

def foo(self):

print 'p1-foo'

class p2(object):

def foo(self):

print 'p2-foo'

def bar(self):

print 'p2-bar'

class c1 (p1,p2):

pass

class c2 (p1,p2):

def bar(self):

print 'c2-bar'

class d(c1,c2):

pass

d=d()

d.foo() # 輸出 p1-foo

d.bar() # 輸出 c2-bar

2、說明

例項d呼叫foo()時,搜尋順序是 d => c1 => c2 => p1

例項d呼叫bar()時,搜尋順序是 d => c1 => c2

四、總結圖示

類的多重繼承

程式頭部注釋開始 程式的版權和版本宣告部分 檔名稱 作 者 張傳新 完成日期 2012 年 05 月 08 日 版 本 號 1.0 對任務及求解方法的描述部分 輸入描述 問題描述 程式輸出 程式頭部的注釋結束 include includeusing namespace std class teac...

類的多重繼承

類的多重繼承 引入 通常乙個事物會同時具有多種基類的屬性,如乙個老師同時是職員也是一位父親,這個時候就會使用多重繼承來展示事物的本質屬性 1 形式 class a 繼承方式 b,繼承方式 c 注 以逗號在多個基類間產生分隔 2 建構函式 同樣是在派生類建構函式中利用函式總表初始化各個基類,先呼叫基類...

python的多重繼承

在設計類的繼承關係時,通常,主線都是單一繼承下來的,如果需要 混入 額外的功能,通過多重繼承就可以實現,這種設計通常稱之為mixin。class animal object pass class mammal animal pass class runnable object def run sel...