Python多重繼承

2021-07-13 11:22:56 字數 1203 閱讀 3309

class printa:

namea="printa"

def set_value(self,a):

self.a=a

def set_namea(self,namea):

printa.namea=namea

def info(self):

print("printa:%s,%s"%(printa.namea,self.a))

class printb:

nameb="printb"

def set_nameb(self,nameb):

printa.nameb=nameb

def info(self):

print("printb:%s"%(printb.nameb))

class sub(printa,printb):

pass

class sub2(printb,printa):

pass

class sub3(printa,printb):

def info(self):#修改了info方法

printa.info(self)

printb.info(self)

print("使用第乙個子類")

sub=sub()

sub.set_value("aaaaa")

sub.info()

sub.set_nameb("bbbb")

sub.info()

print("使用第二個類")

sub2=sub2()

sub2.set_value("aaaaa")

sub2.info()

sub2.set_nameb("bbbb")

sub2.info()

print("使用第三個類")

sub3=sub3()

sub3.set_value("aaaa")

sub3.info()

sub3.set_nameb("bbb")

sub3.info()

**中有兩個父類a 和b

他們有乙個共同的方法時info

而第乙個子類sub先後繼承了父類a和b

例項化後先呼叫了a中的方法之後呼叫了info方法,由於父類都有info方法,但是由於繼承順序不同,所有繼承按優先順序排序。先輸出a類父類的info方法

而第二個子類,繼承順序不同,所以先輸出b父類的info方法,

python 多重繼承

python和c 一樣,支援多繼承。概念雖然容易,但是困難的工作是如果子類呼叫乙個自身沒有定義的屬性,它是按照何種順序去到父類尋找呢,尤其是眾多父類中有多個都包含該同名屬性。對經典類和新式類來說,屬性的查詢順序是不同的。現在我們分別看一下經典類和新式類兩種不同的表現 經典類 usr bin pyth...

python多重繼承

class d object pass class c d pass class b d pass class a b,c pass mro method resolution order 方法解析順序 為了解決多繼承問題 在inspect檔案中 採用aov圖,每次輸出乙個入度為零的點 相當於沒有人...

Python 多重繼承

class a object def test self print aaa class b object def test self print b中的test 方法 def test2 self print bbb 在python中是支援多重繼承的,也就是我們可以為乙個類同時指定多個父類 可以在...