Python中的多繼承

2021-09-24 05:53:44 字數 1690 閱讀 2480

#coding:utf8

#1.多繼承:子類有多個父類

class

human

:def

__init__

(self, ***)

: self.*** = ***

defp(self)

:print

("這是human的方法"

)class

person

:def

__init__

(self, name)

: self.name = name

defp(self)

:print

("這是person的方法"

)def

person

(self)

:print

("這是我person特有的方法"

)class

teacher

(person)

:def

__init__

(self, name, age)

:super()

.__init__(name)

self.age = age

class

student

(human, person)

:def

__init__

(self, name, ***, grade)

:#super().__init__(name) #注意:對於多繼承來說,使用super只會呼叫第乙個父類的屬性方法

#super().__init__(***) #要想呼叫特定父類的構造器只能使用父類名.__init__方式。如下:

human.__init__(self,***)

person.__init__(self,name)

self.grade = grade

class

son(human, teacher)

:def

__init__

(self, ***, name, age, fan)

: human.__init__(self, ***)

teacher.__init__(self, name, age)

self.fan = fan

# ------建立物件 -------------

stu = student(

"tom"

,"male",88

)print

(stu.name,stu.***,stu.grade)

stu.p(

)# 雖然父類human和person都有同名p()方法 ,但是呼叫的是括號裡的第乙個父類human的方法

son1 = son(

"jerry"

,"female",18

,"打球"

)son1.person(

)# 可以呼叫父類的父類的方法。

son1.p(

)# 子類呼叫眾多父類中同名的方法,按繼承的順序查詢。

1. 只有當子類執行父類的_init_函式後,子類才可以使用相就父類的屬性與方法。

2. 如果多個父類有乙個同名方法,子類在呼叫此同名方法時,由左到右,依次尋找,直到找到第乙個父類的同名函式,並執行。

Python中的多繼承

python和c 一樣,支援多繼承。概念雖然容易,但是困難的工作是如果子類呼叫乙個自身沒有定義的屬性,它是按照何種順序去到父類尋找呢,尤其是眾多父類中有多個都包含該同名屬性。class p1 object deffoo self print p1 foo class p2 object deffoo...

python中的多繼承

一 介紹 python同樣有限的支援多繼承形式。多繼承的類定義形如下例 class derivedclassname base1,base2,base3 需要注意圓括號中父類的順序,若是父類中有相同的方法名,而在子類使用時未指定,python從左至右搜尋 即方法在子類中未找到時,從左到右查詢父類中是...

python中的多繼承

python和c 一樣,支援多繼承。概念雖然容易,但是困難的工作是如果子類呼叫乙個自身沒有定義的屬性,它是按照何種順序去到父類尋找呢,尤其是眾多父類中有多個都包含該同名屬性。class p1 object def foo self print p1 foo class p2 object def f...