目錄
1. 類的結構
1.1 術語 ---- 例項
1.2 類是乙個特殊的物件
2. 類屬性和例項屬性
2.1 概念和使用
2.2 屬性的獲取機制 (科普)
3. 類方法和靜態方法
3.1 類方法
3.2 靜態方法
3.3 方法綜合案例
案例小結 :
使用物件導向開發,第1步是設計類使用 物件=類名( )建立物件,建立物件的動作有兩步:
1) 在記憶體中為物件分配空間
2) 呼叫初始化方法 __init__ 為物件初始化
3.物件建立後,記憶體中就有了乙個物件的實實在在的存在 ----例項
因此, 通常也會把:
建立出來的物件叫做類的例項建立物件的動作叫做例項化物件的屬相叫做例項屬性物件呼叫的方法叫做例項方法
在程式執行時:
物件各自擁有自己的例項屬性呼叫物件方法, 可以通過 self:
結論:
python 中一切皆物件:即:
1.1 類屬性
1.2 類方法
例項需求:
class tool(object):
# 使用賦值語句定義類屬性, 記錄所有工具物件的數量
count = 0
def __init__(self, name):
self.name = name
# 讓類屬性的值+1
tool.count += 1
# 1. 建立工具物件
tool1 = tool("石頭")
tool2 = tool("剪刀")
tool3 = tool("布")
類名.類屬性物件.類屬性(不推薦)
注意:
語法如下:
@classmethod
def 類方法名(cls):
pass
例項需求:
class tool(object):
# 使用賦值語句定義類屬性, 記錄所有工具物件的數量
count = 0
@classmethod
def show_tool_count(cls):
print("工具物件的數量 %d" % cls.count)
def __init__(self, name):
self.name = name
# 讓類屬性的值+1
tool.count += 1
# 1. 建立工具物件
tool1 = tool("剪刀")
tool2 = tool("石頭")
tool3 = tool("布")
# 2. 輸出工具物件的總數
tool.show_tool_count()
在類方法內部, 可以直接使用 cls 訪問類屬性或者呼叫類方法在開發時, 如果需要在 類 中封裝乙個方法, 這個方法:
這個時候, 可以把這個方法裝成乙個靜態方法語法如下:
@staticmethod
def 靜態方法名():
pass
class dog(object):
@staticmethod
def run():
# 不訪問例項屬性/類屬性
print("小狗要跑...")
# 通過類名. 呼叫靜態方法 - 不需要建立物件
dog.run()
需求:設計乙個 game 類
屬性:定義乙個類屬性top_score 記錄遊戲的歷史最高分
定義乙個例項屬性player_name 記錄當前遊戲的玩家姓名方法:
靜態方法show_help 顯示遊戲幫助資訊
類方法show_top_score 顯示歷史最高分
例項方法start_game 開始當前玩家的遊戲
主程式步驟
1) 檢視幫助資訊
2) 檢視歷史最高分
3) 建立遊戲物件, 開始遊戲
**:
class gmae(object):
# 類屬性-歷史最高分
top_score = 0
# 例項屬性-記錄遊戲者姓名
def __init__(self,player_game):
self.player_game = player_game
# 定義靜態方法-顯示幫助資訊
@staticmethod
def show_help():
print("幫助資訊:讓殭屍進入大門")
# 定義類方法-輸出歷史最高分
@classmethod
def show_top_score(cls):
print("歷史最高分 %d " % cls.top_score)
# 定義例項方法——開始遊戲
def start_game(self):
print("%s 開始遊戲。。。" % self.player_game)
# 1.檢視遊戲的幫助資訊--使用靜態方法
gmae.show_help()
# 2.檢視歷史最高分--使用類方法
gmae.show_top_score()
# 3.建立遊戲物件,開始遊戲--使用例項方法
game = gmae("小明")
game.start_game()
輸出:
c:\users\10428\desktop\py-project\venv\scripts\python.exe c:/users/10428/desktop/py-project/物件導向特性/ky_17_方法綜述案例.py
幫助資訊:讓殭屍進入大門
歷史最高分 0
小明 開始遊戲。。。
process finished with exit code 0
例項方法---- 方法內部需要訪問例項屬性
例項方法
內部可以使用類名.訪問類屬性
類方法---- 方法內部只需要訪問類屬性靜態方法---- 方法內部, 不需要訪問例項屬性和類屬性
提問:
如果方法內部 既需要訪問例項屬性,又需要訪問類屬性,應該定義什麼方法?答案
Python基礎(例項屬性和類屬性)
1.類沒有例項屬性時會呼叫類屬性 class flower object height 20 def init self,name,color self.name name self.color color f flower 玫瑰 紅色 print f.height 輸出 202.例項屬性的優先順序...
python基礎 例項屬性和類屬性
由於python是動態語言,根據類建立的例項可以任意繫結屬性。給例項繫結屬性的方法是通過例項變數,或者通過self變數 class student object def init self,name self.name name s student bob s.score 90 但是,如果stude...
Python 類屬性和類方法
僅用學習參考 使用物件導向開發,第 1 步是設計類使用類名 建立物件,建立物件的動作有兩步 物件建立後,記憶體中就有了乙個物件的實實在在的存在 例項 因此,通常也會把 建立出來的物件叫做類的例項建立物件的動作叫做例項化物件的屬性叫做例項屬性物件呼叫的方法叫做例項方法 在程式執行時 物件各自擁有自己的...