Python 類屬性和類方法

2021-09-28 08:32:29 字數 4192 閱讀 2380

僅用學習參考

使用物件導向開發,第 1 步是設計使用類名()建立物件,建立物件的動作有兩步:

物件建立後,記憶體中就有了乙個物件的實實在在的存在 ——例項

因此,通常也會把:

建立出來的物件叫做例項建立物件的動作叫做例項化物件的屬性叫做例項屬性物件呼叫的方法叫做例項方法

在程式執行時:

物件各自擁有自己的例項屬性

呼叫物件方法,可以通過self.

結論

python一切皆物件

示例需求

# 使用賦值語句,定義類屬性,記錄建立工具物件的總數

count = 0

def __init__(self, name):

self.name = name

# 針對類屬性做乙個計數+1

tool.count += 1

# 建立工具物件

tool1 = tool("斧頭")

tool2 = tool("榔頭")

tool3 = tool("鐵鍬")

# 知道使用 tool 類到底建立了多少個物件?

print("現在建立了 %d 個工具" % tool.count)

python屬性的獲取存在乙個向上查詢機制類名.類屬性物件.類屬性(不推薦)

注意

類方法就是針對類物件定義的方法

語法如下

@classmethod

def 類方法名(cls):

pass

通過類名.呼叫類方法呼叫方法時,不需要傳遞cls引數

在方法內部

示例需求

需求—— 在封裝乙個show_tool_count的類方法,輸出使用當前這個類,建立的物件個數

"""顯示工具物件的總數"""

print("工具物件的總數 %d" % cls.count)

在類方法內部,可以直接使用cls訪問類屬性或者呼叫類方法

這個時候,可以把這個方法封裝成乙個靜態方法語法如下

@staticmethod

def 靜態方法名():

pass

class dog(object):

# 狗物件計數

dog_count = 0

@staticmethod

def run():

# 不需要訪問例項屬性也不需要訪問類屬性的方法

print("狗在跑...")

def __init__(self, name):

self.name = name

執行如下:

in [2]: class dog(object):

...: dog_count = 0

...: @staticmethod

...: def run():

...: print("狗在跑")

...: def __init__(self,name):

...: self.name = name

...:

in [4]: dog1 = dog("小白")

in [6]: dog1.run()

狗在跑in [7]:

設計乙個game

屬性:方法:

主程式步驟

案例小結

例項方法—— 方法內部需要訪問例項屬性

類方法—— 方法內部需要訪問類屬性

靜態方法—— 方法內部,不需要訪問例項屬性類屬性

提問

如果方法內部 即需要訪問例項屬性,又需要訪問類屬性,應該定義成什麼方法?

答案

class game(object):

# 遊戲最高分,類屬性

top_score = 0

@staticmethod

def show_help():

print("幫助資訊:讓殭屍走進房間")

@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. 建立遊戲物件,開始遊戲

game = game("小明")

game.start_game()

# 4. 遊戲結束,檢視遊戲最高分

python 之 類屬性和類方法

使用面相物件開發,第 1 步是設計類使用類名 建立物件,建立物件的動作有兩步 物件建立後,記憶體中就有了乙個物件的實實在在的存在 例項 因此,通常也會把 建立出來的物件叫做類的例項建立物件的動作叫做例項化物件的屬性叫做例項屬性物件呼叫的方法叫做例項方法 在程式執行時 物件各自擁有自己的例項屬性呼叫物...

Python類屬性和類方法詳解

class dog tooth 10 類屬性就是類物件所有的屬性,他被該類的所有例項所共有 類屬性可以通過類物件或類例項進行訪問 類屬性為全類所共有,僅佔乙份記憶體 w1 dog w2 dog print w1.tooth print w2.tooth print dog.tooth 結果為 cla...

類屬性和類方法

當乙個屬性 方法被static修飾的時候,就叫做類屬性 類方法,又叫做靜態屬性 靜態方法 沒有被static修飾的屬性,就叫物件屬性 物件方法,又叫例項屬性 例項方法和非靜態屬性 非靜態方法。當乙個屬性被宣告成類屬性,那麼所有的物件,都共享乙個值,所有物件都可以修改這個值,一經修改前面的值將會被丟棄...