您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)python面向?qū)ο笾悓傩院皖惙椒ǖ氖纠治龅膬?nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。
類的結(jié)構(gòu)
類屬性和實(shí)例屬性
類方法和靜態(tài)方法
使用面相對(duì)象開發(fā),第 1 步 是設(shè)計(jì) 類
使用 類名() 創(chuàng)建對(duì)象,創(chuàng)建對(duì)象 的動(dòng)作有兩步:
在內(nèi)存中為對(duì)象 分配空間
調(diào)用初始化方法 init 為 對(duì)象初始化
對(duì)象創(chuàng)建后,內(nèi)存 中就有了一個(gè)對(duì)象的 實(shí)實(shí)在在 的存在 —— 實(shí)例
class Tool(object):
# 使用賦值語句,定義類屬性,記錄創(chuàng)建工具對(duì)象的總數(shù)
count = 0
def __init__(self, name):
self.name = name
# 針對(duì)類屬性做一個(gè)計(jì)數(shù)+1
Tool.count += 1
# 創(chuàng)建工具對(duì)象
tool1 = Tool("斧頭")
tool2 = Tool("榔頭")
tool3 = Tool("鐵鍬")
# 知道使用 Tool 類到底創(chuàng)建了多少個(gè)對(duì)象?
print("現(xiàn)在創(chuàng)建了 %d 個(gè)工具" % Tool.count)
在 Python 中 屬性的獲取 存在一個(gè) 向上查找機(jī)制
@classmethod
def 類方法名(cls):
pass
類方法需要用 修飾器 @classmethod 來標(biāo)識(shí),告訴解釋器這是一個(gè)類方法
類方法的 第一個(gè)參數(shù) 應(yīng)該是 cls
由 哪一個(gè)類 調(diào)用的方法,方法內(nèi)的 cls 就是 哪一個(gè)類的引用
這個(gè)參數(shù)和 實(shí)例方法 的第一個(gè)參數(shù)是 self 類似
提示 使用其他名稱也可以,不過習(xí)慣使用 cls
通過 類名. 調(diào)用 類方法,調(diào)用方法時(shí),不需要傳遞 cls 參數(shù)
在方法內(nèi)部
可以通過 cls. 訪問類的屬性
也可以通過 cls. 調(diào)用其他的類方法
示例需求
定義一個(gè) 工具類
每件工具都有自己的 name
需求 —— 在 類 封裝一個(gè) show_tool_count 的類方法,輸出使用當(dāng)前這個(gè)類,創(chuàng)建的對(duì)象個(gè)數(shù)
@classmethod
def show_tool_count(cls):
"""顯示工具對(duì)象的總數(shù)"""
print("工具對(duì)象的總數(shù) %d" % cls.count)
在類方法內(nèi)部,可以直接使用 cls 訪問 類屬性 或者 調(diào)用類方法
在開發(fā)時(shí),如果需要在 類 中封裝一個(gè)方法,這個(gè)方法:
既 不需要 訪問 實(shí)例屬性 或者調(diào)用 實(shí)例方法
也 不需要 訪問 類屬性 或者調(diào)用 類方法
這個(gè)時(shí)候,可以把這個(gè)方法封裝成一個(gè) 靜態(tài)方法
語法如下
@staticmethod def 靜態(tài)方法名(): pass
靜態(tài)方法 需要用 修飾器 @staticmethod 來標(biāo)識(shí),告訴解釋器這是一個(gè)靜態(tài)方法
通過 類名. 調(diào)用 靜態(tài)方法
class Dog(object): # 狗對(duì)象計(jì)數(shù) dog_count = 0 @staticmethod def run(): # 不需要訪問實(shí)例屬性也不需要訪問類屬性的方法 print("狗在跑...") def __init__(self, name): self.name = name
需求
設(shè)計(jì)一個(gè) Game 類
屬性:
定義一個(gè) 類屬性 top_score 記錄游戲的 歷史最高分
定義一個(gè) 實(shí)例屬性 player_name 記錄 當(dāng)前游戲的玩家姓名
方法:
靜態(tài)方法 show_help 顯示游戲幫助信息
類方法 show_top_score 顯示歷史最高分
實(shí)例方法 start_game 開始當(dāng)前玩家的游戲
主程序步驟
查看幫助信息
查看歷史最高分
創(chuàng)建游戲?qū)ο?,開始游戲
class Game(object):
# 游戲最高分,類屬性
top_score = 0
@staticmethod
def show_help():
print("幫助信息:讓僵尸走進(jìn)房間")
@classmethod
def show_top_score(cls):
print("游戲最高分是 %d" % cls.top_score)
def __init__(self, player_name):
self.player_name = player_name
def start_game(self):
print("[%s] 開始游戲..." % self.player_name)
# 使用類名.修改歷史最高分
Game.top_score = 999
# 1. 查看游戲幫助
Game.show_help()
# 2. 查看游戲最高分
Game.show_top_score()
# 3. 創(chuàng)建游戲?qū)ο?,開始游戲
game = Game("小明")
game.start_game()
# 4. 游戲結(jié)束,查看游戲最高分
Game.show_top_score()
感謝各位的閱讀!關(guān)于“python面向?qū)ο笾悓傩院皖惙椒ǖ氖纠治觥边@篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。