🐈
Python100本ノック#10 クラスメソッド(classmethod)とスタティックメソッド(staticmethod)の利用例
クラスメソッド(classmethod)とスタティックメソッド(staticmethod)の利用例
設計
Gameクラス:
属性1:ゲーム内のトップスコア
属性2:プレイヤーの名前
メソッド1:トップスコア表示
メソッド2:ヘルプ情報表示
メソッド3:ゲームスタート
分析:
属性1はゲーム内の共通属性であるため、クラス属性``にすべき。 属性2はプレイヤーごとの属性になるため、
インスタンス属性にすべき。 メソッド1:属性1を呼び出すためのものであり、
classmethodにすべき。 メソッド2:インスタンス変数やクラス変数にアクセスする必要がない、独立したメソッドのため、
staticmethodにしてよさそう。 メソッド3:プレイヤーごとのゲームを始めるための機能だから、
インスタンスメソッド```にすべき。
実装
class Game(object):
# 1、top_score
# 属性1:ゲーム内のトップスコア
top_score = 0
# 2、__init__で初期化
# 属性2:プレイヤーの名前
def __init__(self, player_name):
self.player_name = player_name
# 3、メソッド1:トップスコア表示 を定義
@classmethod
def show_top_score(cls):
print(f'ゲーム内のトップスコア:{cls.top_score}')
# 4、メソッド2:ヘルプ情報表示 を定義
@staticmethod
def show_help():
print('ヘルプ情報')
# 5、start_game() を定義
def start_game(self):
print(f'{self.player_name},Game Start')
# インスタンス化
mario = Game('Mario')
mario.start_game()
# トップスコア表示
Game.show_top_score()
# ヘルプ情報表示
Game.show_help()
luigi = Game('Luigi')
luigi.start_game()
output
Mario,Game Start
ゲーム内のトップスコア:0
ヘルプ情報
Luigi,Game Start
Discussion