Python中靜態方法與類方法的區別

2021-10-19 18:15:32 字數 2006 閱讀 2266

1.靜態方法的使用 

#_*_coding:utf-8_*_

# 類方法使用@classmethod 修飾

# cls.內部類封裝,可以在類方法內部訪問類方法和類屬性

class writer(object):

age = 15

def __init__(self, age, name):

writer.age += age

self.name = name

@staticmethod

def read():

print('你好啊')

def hello(self):

print(self.name)

@classmethod

def hear(cls):

print(cls.age)

rb = writer(18,'黎明')

rb.hear()

rb.read()

rb.hello()

執行結果:

2.使用cls來呼叫內部變數

import random

class game(object):

#遊戲最高分,類屬性

top_score = [0,0,0]

@staticmethod

def show_help():

print('幫助資訊,讓殭屍走進房間')

@classmethod

def show_top_score(cls):

print('遊戲最高分是 %d'% cls.top_score[0])

def __init__(self, player_name):

self.player_name = player_name

@classmethod

def show_onetothree(cls):

print('前三名的成績 %s'% cls.top_score)

def start_game(self):

print('[%s] 開始遊戲' % self.player_name)

self.score = random.randint(1,10000)

print('%s 遊戲結束...' %self.player_name)

print('%s 最後的分為 %d' % (self.player_name,self.score))

self.top_score.sort(reverse=true)

self.top_score=game.top_score.pop()

@classmethod

def show_score(cls):

print(cls.top_score)

#使用類名,修改歷史最高分

#game.top_score = 999

# 1. 檢視遊戲幫助

game.show_help()

# 2. 檢視遊戲最高分

#game.show_top_score()

# 3. 建立遊戲物件,開始遊戲

game1 = game('小明')

game1.start_game()

game2 = game('小紅')

game2.start_game()

game3 = game('小馬')

game3.start_game()

# 4.檢視前三名

game.show_onetothree()

# 5. 檢視歷史最高分

game.show_top_score()

結果圖:

Python中靜態方法與類方法比較

python是一種物件導向的程式語言,故類的概念十分重要。其中python類中方法的定義有這樣兩種靜態方法與類方法很相似。定義乙個類 class myclass staticmethod def foo1 print this is static method classmethod def foo...

Python類成員方法與靜態方法

python中類屬性有類屬性和例項屬性之分,類的方法也有不同的種類 例項方法 類方法靜態方法 例子 class demomthd staticmethod 靜態方法 def static mthd print 呼叫了靜態方法 classmethod 類方法 def class mthd cls pr...

Python中類方法和靜態方法

要在類中使用靜態方法,需在靜態方法前面加上 staticmethod標記符,以表示下面的成員函式是靜態函式。使用靜態方法的好處 其函式不需要self引數,可以通過類呼叫該方法,不需要定義該類例項 當然通過類例項呼叫也沒有問題 類方法可以通過類或它的例項來呼叫,但 該方法的 第乙個引數cls是定義該方...