class
parent()
:def
override
(self)
:print
("parent override()"
)def
implicit
(self)
:print
("parent implicit()"
)def
altered
(self)
:print
("parent altered()"
)class
child
(parent)
:def
override
(self)
:print
("child override()"
)def
altered
(self)
:print
("child, before parent altered()"
)super()
.altered(
)print
("child, after parent altered()"
)dad = parent(
)son = child(
)# 隱式繼承,父類定義了implicit函式,但沒有在子類中定義,子類會從父類繼承所有的行為
dad.implicit(
)son.implicit(
)# 顯示繼承,子類override函式有乙個不同的行為,從而實現子類的新功能。
dad.override(
)son.override(
)# 在執行前或執行後替換,在繼承父類函式前或後再修改行為。使用python的內建函式super來呼叫父類裡的函式。
dad.altered(
)son.altered(
)result:
parent implicit(
)parent implicit(
)parent override(
)child override(
)parent altered(
)child, before parent altered(
)parent altered(
)child, after parent altered(
)
在python2.7中,繼承語法稍有不同,son類定義類似於下面這樣:
# 初始化
class
parent
(object):
def__init__
(self):-
-snip-
-class
son(parent)
:def
__init__
(self)
:super
(son,self)
.__init__()-
-snip--或
# 無需初始化
class
parent
(object):
deffunc
(self):-
-snip-
-class
son(parent)
:def
func
(self)
:super
(son,self)
.func()-
-snip-
-
函式super()需要兩個實參:子類名和物件self。為幫助python將父類和子類關聯起來,這些實參必不可少,另外,在python2.7中使用繼承是,務必在定義父類是在括號內指定object。
繼承是一種有用的技術,但也可以直接使用別的類和模組實現同樣功能。
class
other()
:def
override
(self)
:print
("other override()"
)def
implicit
(self)
:print
("other implicit()"
)def
altered
(self)
:print
("other altered()"
)class
child()
:def
__init__
(self)
: self.other = other(
)def
implicit
(self)
: self.other.implicit(
)def
override
(self)
:print
("child override()"
)def
altered
(self)
:print
("child, before other altered()"
) self.other.altered(
)print
("child, after other altered()"
)son = child(
)son.implicit(
)son.override(
)son.altered(
)result:
other implicit(
)child override(
)child, before other altered(
)other altered(
)child, after other altered(
)
44 繼承的方式
當乙個類從另乙個類繼承時,子類能夠從父類繼承到的是父類的公有型別的成員屬性和成員方法,以及保護型別的成員屬性和成員方法。這些子類從父類繼承得到的屬性和方法,在子類中是什麼型別?這個問題與派生類的定義有關,基類的說明前有public protected和private進行說明,將從父類繼承來的屬性和方...
C 4 4 多重繼承
定義 當乙個派生類具有兩個或多個基類時,這種派生方法成為多重繼承或多基類派生。語法形式 class 派生類名 繼承方式1 基類名1,繼承方式n 基類名n 示例 includeusing namespace std class x void visit 2 引數總表中包含完成所有基類初始化所需的引數個...
笨辦法學Python3 ex44 學習筆記
第44個練習是關於繼承。第乙個例子講的是隱式繼承,什麼是隱式繼承呢?簡單地說,當a類中存在的特性或方法x,而b類中沒有定義,直接從a類中繼承得來,這種方式得繼承就是隱式繼承。如下面得 ex44a.py class parent object defimplicit self print parent...