#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...