Python 入門之類的繼承(二)

2021-10-24 17:30:12 字數 3164 閱讀 1452

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