寫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的 這樣就導致了錯誤發生...