@classmethod和@staticmethod裝飾器使用介紹
by:授客 QQ:1033553122
簡介
靜態方法:類中用 @staticmethod裝飾的不帶 self 參數的方法。類的靜態方法可以直接使用類名調用。
類方法: 默認有個cls參數,可以被類和對象調用,需要加上 @classmethod裝飾器
普通方法: 默認有個self參數,且只能被對象調用。
代碼
classDotaGame:
top_score = 0
def__init__(self, name):
self.name = name
@staticmethod
defprint_game_rules():
print("游戲規則:1 xxxx游戲規則1 \n 2 xxxx游戲規則2")
@classmethod
defprint_store(cls):
print("歷史最高分: %s" % cls.top_score)
defprint_game_name(self):
print('開始 %s 游戲' % self.name)
DotaGame('dota').print_game_name()
DotaGame.print_store()
DotaGame.print_game_rules()
運行結果:
開始dota游戲
歷史最高分: 0
游戲規則:1 xxxx游戲規則1
2 xxxx游戲規則2
結論
1、對於不需要訪問類實例屬性,類實例方法,和類屬性的函數定義成靜態函數
2、對於需要訪問類屬性的定義成類函數
3、對於需要訪問實例屬性、實例方法的定義成實例函數
