python類的繼承及重寫父類方法

2021-10-01 15:27:18 字數 2873 閱讀 9286

寫python有一年多了,平日使用python解決一些問題,調一些介面,用一些框架,雖然不影響都可以寫,但一直沒有好好的花時間去理解python概念性的東西。也許,這也是寫了這麼久一直不能有所進步的原因,從今天起,來重新好好的學習一下python的相關概念。

class

tree

:def

__init__

(self,name,age)

: self.name = name

self.age = age

defgrow

(self)

:print

("{} tree is growing...now it's {} years old"

.format

(self.name,self.age)

)def

seed

(self)

:print

("{} tree is seeding..."

.format

(self.name)

)class

(tree)

:"""docstring for classname"""

def__init__

(self, name, age, color)

:super()

.__init__(name,age)

self.color = color

defprice

(self)

:print

("one {} tree is 100 dollars"

.format

(self.name)

)class

pear

(tree)

:"""docstring for classname"""

def__init__

(self, name, age, color)

:super()

.__init__(name,age)

self.color = color

defprice

(self)

:print

("one {} {} tree is 80 dollars"

.format

(self.color,self.name)

)def

grow

(self)

:#重寫父類的方法grow生長

print

("it was {} years old,now it is {} years old"

.format

(self.age,

int(self.age)+1

))if __name__ ==

'__main__':,

8,'white'

) a.grow(

) a.seed(

) a.price(

) b = pear(

'pear',8

,'red'

) b.price(

) b.grow(

)>>

>

#one red pear tree is 80 dollars

#it was 8 years old,now it is 9 years old

3.父類方法的改寫,可通過在子類中重寫相同函式名的方式進行改寫。

class

tree:.

....

.def

grow

(self)

:print

("{} tree is growing...now it's {} years old"

.format

(self.name,self.age)

)class

pear

(tree)

: ···

···def

grow

(self)

:#重寫父類的方法grow生長

print

("it was {} years old,now it is {} years old"

.format

(self.age,

int(self.age)+1

))

4.super函式的用法

python2 super

(tree,self)

.__init__(name,age)

python3 super()

.__init__(name,age)

在子類中使用super()函式,super()函式可以見到理解為代表父類tree()。當需要在子類中呼叫父類的方法時,我們可以用super()來表示父類tree()

···

···class

orange

(tree)

:def

grow

(self)

:#呼叫父類tree的方法grow

super()

.grow(

)#直接呼叫tree類的方法

tree(

,'16'

).grow(

)#重寫父類方法grow

print

("{} tree has changed..."

.format

(self.name)

)orange(

'orange'

,'15'

)>>

>

#orange tree is growing...now it's 15 years old

#orange tree has changed...

子類繼承父類重寫父類的屬性值問題

試想一下 的執行結果 package com.syc.test public class a class fatherclass class sonclass extends fatherclass 程式的執行結果是 你想對了嗎?我們稍微做乙個改變,繼續試想一下 的執行結果 package com....

2 python 繼承 重寫父類的方法

定義父類 class a 定義父類的構造方法 def init self self.a aaaa 定義父類的公有方法public def public selfs print publi method of a 定義子類b,繼承了父類a class b a 定義子類的構造方法 def init se...

python繼承的時候,要重寫父類建構函式的原因

class bird def init self self.hungry true def eat self if self.hungry print 我餓了 else print 不餓,謝謝 在子類繼承的時候,建構函式被重寫,但是重寫的時候沒有任何初始化父類屬性hungry的 這樣就導致了錯誤發生...