多型 更容易編寫出出通用的**,做出通用的程式設計,以適應需求的不斷變化。 需求
在 dog 類中封裝方法 game
普通狗只是簡單的玩耍
定義 xiao tian dog 繼承自 dog ,並且重寫 game 方法
哮天犬需要在天上玩耍
定義 person 類,並且封裝乙個 和狗玩 的方法
在方法內部,直接讓 狗物件 呼叫 game 方法
class
dog(
object):
def__init__
(self,name)
: self.name = name
defgame
(self)
:print
("%s 蹦蹦跳跳的玩耍..."
% self.name)
class
xiaotiandog
(dog)
:def
game
(self)
:print
("%s 飛到天上去玩耍..."
% self.name)
class
person
(object):
def__init__
(self,name)
: self.name = name
defplay_game
(self,dog)
:print
("%s 和 %s 快樂的玩耍..."
%(self.name, dog.name)
) dog.game(
)x = xiaotiandog(
'哮天犬'
)v = dog(
'小狗'
)dagu = person(
'dagu'
)dagu.play_game(x)
dagu.play_game(v)
'''dagu 和 哮天犬 快樂的玩耍...
哮天犬 飛到天上去玩耍...
dagu 和 小狗 快樂的玩耍...
小狗 蹦蹦跳跳的玩耍...
類屬性得優點:
類屬性只能通過類物件修改,不能通過例項物件修改,如果通過例項物件修改類屬性,表示是建立了乙個例項屬性。
classa(
object):
name =
10i = a(
)j =a(
)i.name =
20print
(i.name)
# 20
print
(j.name)
# 10
a.name =
30print
(i.name)
# 20
print
(j.name)
# 30
4.1.1類方法特點
@classmethod
def 類方法名(cls)
:pass
在方法內部:可以通過 cls. 訪問類的屬性;也可以通過 cls. 呼叫其他的類方法。
class
tool()
: count =
0def
__init__
(self,name)
: self.name = name
# 統計建立的物件個數
tool.count +=
1 @classmethod
defshow_tool_count
(cls)
:print
('建立的物件個數:%d'
%cls.count)
tool1 = tool(
"斧頭"
)tool2 = tool(
"榔頭"
)tool3 = tool(
"鐵鍬"
)tool1.show_tool_count(
)tool.show_tool_count(
)'''
建立的物件個數:3
建立的物件個數:3
'''
在開發時,如果需要在類中封裝乙個方法,這個方法:
@staticmethod
def 靜態方法名():
pass
class
dog(
object):
# 狗物件計數
dog_count =
0 @staticmethod
defrun()
:# 不需要訪問例項屬性也不需要訪問類屬性的方法
print
("狗在跑..."
)def
__init__
(self, name)
: self.name = name
dahuang = dog(
'dahuang'
)dahuang.run(
)dog.run(
)'''
狗在跑...
狗在跑...
'''
2 1物件導向程式設計基礎(3)
格式 class 派生類名 繼承方式 基類名 繼承方式 private public protected 注意 派生類繼承基類的成員函式,但不繼承建構函式 派生類建構函式名 總引數列表 基類建構函式名 引數列表 注意 若沒有基類建構函式,則按預設建構函式初始化基類的變數 例子 include usi...
九 物件導向 補
this關鍵字表示當前物件本身,一般用於類的內部,其內部存在乙個位址,指向當前初始化的物件本身.new 乙個物件時,其實產生了兩個引用,兩個引用執行同一記憶體空間 物件 所以類中用this來表示當前物件,因為不用this,我們是不知道在建立物件時具體的物件名的 1.呼叫成員變數 用於解決成員變數與區...
python物件導向基礎 python物件導向基礎
面向過程與物件導向 面向過程的程式設計的核心是過程 流水線式思維 過程即解決問題的步驟,面向過程的設計就好比精心設計好的一條流水線,考慮周全什麼時候處理什麼東西。優點 極大降低了寫程式的複雜度,只需要順著要執行的步驟,堆疊 即可。缺點 一套流水線或者流程就是解決乙個問題,牽一髮而動全身。應用場景 一...