python基礎 繼承和多繼承

2022-02-07 15:16:09 字數 1806 閱讀 5571

繼承

class

a:

defspam(self):

print("

a.spam")

defadd(self, x,y):

return x+y

class

b(a):

defspam(self):

"""如果子類要對父類的方法進行重寫,再想呼叫父類的方法,就需要使用super().方法名() 的形式

"""print("

b.spam")

super().spam()

#呼叫父類的spam()

b =b()

b.spam()

print(b.add(8,8))

class

c:

def__init__

(self):

self.x = 100

defcompare(self, num):

if self.x>num:

return

self.x

else

:

return

num

class

d(c):

def__init__

(self):

super().

__init__() #

super() 函式的乙個常見用法是在__init__() 方法中確保父類被正確的初始化

self.x = 300 #

更改父類

self.y = 500d=d()

print(d.compare(101)) #

300 得到的結果也會更改

print(d.y) #

500print(d.x)

多繼承

#

python中的多繼承

class

a:

deffoo(self):

print("

a類的方法")

class

b:

deffoo(self):

print("

b類的方法")

deffoo_1(self):

print("

b類專有的方法")

class

c(a,b):

pass

class

d(c, a):

pass

"""class d(a, c):

pass

會報錯:

typeerror: cannot create a consistent method resolution

order (mro) for bases a, c

原因分析參考:

"""c =c()

c.foo()

#>>>a類的方法

c.foo_1()

#>>>b類專有的方法

d =d()

d.foo()

#>>>a類的方法

print(d.mro())

#>>>[, , , , ]

總結:兩個概念:經典類,新式類

繼承搜尋的順序發生了改變,經典類多繼承屬性搜尋順序: 先深入繼承樹左側,再返回,開始找右側;

新式類多繼承屬性搜尋順序: 先水平搜尋,然後再向上移動

python基礎 繼承和多繼承

繼承 class a defspam self print a.spam defadd self,x,y return x y class b a defspam self 如果子類要對父類的方法進行重寫,再想呼叫父類的方法,就需要使用super 方法名 的形式 print b.spam super...

python入門 繼承 多繼承

定義 子類擁有父類的所有方法和屬性,子類可直接享受父類中封裝好的方法 語法 class 類名 父類名 pass繼承的傳遞性 c類繼承與b類,b類繼承於a類 覆蓋父類的方法 在子類中定義乙個和父類同名的方法並實現 super 函式 在重寫父類方法時,呼叫在父類中封裝的方法實現 例 def login ...

python 單繼承,多繼承

父類 class person def init self,name,age self.name name self.self.age age def introduce self print 父類方法person self.name 學生類 繼承 person class student pers...