@r星校長
第2
關:覆蓋方法
在子類繼承父類的方法時,若子類需要這個方法具有不同的功能,那麼可以通過覆蓋(overriding)來重寫這個方法。本關的任務是讓學習者掌握通過繼承覆蓋方法。
通過繼承覆蓋方法,也就是在子類裡再寫乙個與父類中一樣的方法,實現自己想要實現的功能。例如:
class
parent
:def
sayhello
(self)
:print
("hello,i am class parent"
)class
subclass
(parent)
:def
sayhello
(self)
:print
("hello,i am class subclass"
)sc = subclass(
)sc.sayhello(
)
結果為:
hello,i am class
subclass
subclass
繼承了parent
類,但是因為它在類中重寫了sayhello()
,所以在建立例項後,呼叫的是重寫後的sayhello()
。
呼叫父類方法
在重寫了父類中的方法後,也可以呼叫父類中的被重寫方法。這時就是去呼叫乙個未繫結的父類方法。例如:
parent.sayhello(sc)
結果為:
hello,i am class
parent
還可以在子類的重寫方法裡顯示呼叫。例如:
class
parent
:def
sayhello
(self)
:print
("hello,i am class parent"
)class
subclass
(parent)
:def
sayhello
(self)
: parent.sayhello(self)
print
("hello,i am class subclass"
)sc = subclass(
)sc.sayhello(
)
結果為:
hello,i am class
parent
hello,i am class
subclass
但是最好的方法是在子類的重寫方法裡使用super()
內建方法。例如:
class
parent
:def
sayhello
(self)
:print
("hello,i am class parent"
)class
subclass
(parent)
:def
sayhello
(self)
:super
(subclass,self)
.sayhello(
)print
("hello,i am class subclass"
)sc = subclass(
)sc.sayhello(
)
結果為:
hello,i am class
parent
hello,i am class
subclass
class
point
:def
__init__
(self,x,y,z,h)
: self.x = x
self.y = y
self.z = z
self.h = h
defgetpoint
(self)
:return self.x,self.y,self.z,self.h
class
line
(point)
:# 請在下面填入覆蓋父類getpoint()方法的**,並在這個方法中分別得出x - y與z - h結果的絕對值
預期輸入:
124160
預期輸出:296
預期輸入:290
6510
預期輸出:
8855
這世間,唯有青春和夢想不可辜負。花開正好,微風不燥,揚帆起航,追逐夢想。 Python 入門之類的繼承
from animalstest import animals 請在下面填入定義fish類的 fish類繼承自animals類 begin class fish animals end def init self,name self.name name defswim self print s會游泳...
python入門之類的繼承
類的繼承 1 定義類的繼承 首先我們來看下類的繼承的基本語法 class classname baseclassname 1 定義類的繼承 首先我們來看下類的繼承的基本語法 class classname baseclassname 在定義類的時候,可以在括號裡寫繼承的類,一開始也提到過,如果不用繼...
Python 入門之類的繼承(四)
r星校長 第4關 多重繼承 在 python 中,多重繼承就是允許子類繼承多個父類,子類可以呼叫多個父類的方法和屬性。但是,當多個父類擁有相同方法名的方法時,我們通過方法名呼叫父類方法就有一定的順序。本關的任務就是讓學習者掌握多重繼承。請先看下面這個例子 classa object deftest ...