使用面相物件開發,第 1 步是設計類使用類名()建立物件,建立物件的動作有兩步:
物件建立後,記憶體中就有了乙個物件的實實在在的存在 ——例項
因此,通常也會把:
建立出來的物件叫做類的例項建立物件的動作叫做例項化物件的屬性叫做例項屬性物件呼叫的方法叫做例項方法
在程式執行時:
物件各自擁有自己的例項屬性呼叫物件方法,可以通過self.
結論
python
中一切皆物件:
示例需求
class
tool
(object):
# 使用賦值語句,定義類屬性,記錄建立工具物件的總數
count =
0def
__init__
(self, name)
: self.name = name
# 針對類屬性做乙個計數+1
tool.count +=
1# 建立工具物件
tool1 = tool(
"斧頭"
)tool2 = tool(
"榔頭"
)tool3 = tool(
"鐵鍬"
)# 知道使用 tool 類到底建立了多少個物件?
print
("現在建立了 %d 個工具"
% tool.count)
注意
類方法就是針對類物件定義的方法
語法如下
@classmethod
def 類方法名(cls)
:pass
通過類名.呼叫類方法,呼叫方法時,不需要傳遞cls
引數
在方法內部
示例需求
@classmethod
defshow_tool_count
(cls)
:"""顯示工具物件的總數"""
print
("工具物件的總數 %d"
% cls.count)
在類方法內部,可以直接使用cls
訪問類屬性或者呼叫類方法
這個時候,可以把這個方法封裝成乙個靜態方法語法如下
@staticmethod
def 靜態方法名():
pass
class
dog(
object):
# 狗物件計數
dog_count =
0
@staticmethod
defrun()
:# 不需要訪問例項屬性也不需要訪問類屬性的方法
print
("狗在跑..."
)def
__init__
(self, name)
: self.name = name
需求設計乙個game
類
屬性:
方法:
主程式步驟
案例小結
例項方法—— 方法內部需要訪問例項屬性
類方法—— 方法內部只需要訪問類屬性靜態方法—— 方法內部,不需要訪問例項屬性和類屬性
提問
如果方法內部 即需要訪問例項屬性,又需要訪問類屬性,應該定義成什麼方法?
答案
class
game
(object):
# 遊戲最高分,類屬性
top_score =
0 @staticmethod
defshow_help()
:print
("幫助資訊:讓殭屍走進房間"
)
@classmethod
defshow_top_score
(cls)
:print
("遊戲最高分是 %d"
% cls.top_score)
def__init__
(self, player_name)
: self.player_name = player_name
defstart_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. 遊戲結束,檢視遊戲最高分
game.show_top_score(
)
類屬性和類方法
當乙個屬性 方法被static修飾的時候,就叫做類屬性 類方法,又叫做靜態屬性 靜態方法 沒有被static修飾的屬性,就叫物件屬性 物件方法,又叫例項屬性 例項方法和非靜態屬性 非靜態方法。當乙個屬性被宣告成類屬性,那麼所有的物件,都共享乙個值,所有物件都可以修改這個值,一經修改前面的值將會被丟棄...
類屬性和類方法
1.使用物件導向開發,第一步是設計類 2.使用 類名 建立物件 建立物件的動作有兩布 在記憶體中物件分配空間 呼叫初始化方法 init 為物件初始化 3.物件建立後,記憶體中就有了乙個物件的實實在在的存在 例項 類是乙個特殊的物件 在程式執行時,類同樣會被載入到記憶體 在python中,類時乙個特殊...
類屬性和類方法
當乙個屬性 方法被static修飾的時候,就叫做類屬性 類方法,又叫做靜態屬性 靜態方法 沒有被static修飾的屬性,就叫物件屬性 物件方法,又叫例項屬性 例項方法和非靜態屬性 非靜態方法。當乙個屬性被宣告成類屬性,那麼所有的物件,都共享乙個值,所有物件都可以修改這個值,一經修改前面的值將會被丟棄...