← クエスト一覧

クエスト44:@classmethodと@staticmethodを使おう

スライド 1 / 6
コーデ
💻 コード例
実行結果
← クエスト一覧
🐍 Python / Quest 44 / 85

クエスト44:@classmethodと@staticmethodを使おう

発展 +10 XP
🏠
今回の課題
Counter クラスの @classmethod get_count を完成させて、作ったインスタンス数「合計: 2」を表示しよう。
📖 解説を見る
🏫 @classmethod って何?

インスタンス(1つ1つの個体)ではなく、クラス全体を操作するメソッドです。第1引数は self ではなく cls(クラス自身)になります。

✏️ 書き方:
class Config:
    theme = 'light'  # クラス変数

    @classmethod
    def get_theme(cls):
        return cls.theme

print(Config.get_theme())
 → light
インスタンスを作らず クラス名.メソッド名() で呼べます。@classmethod はメソッドの真上の行に書きます。

📋 作るもの:
Counter クラスに get_count というメソッドを追加し、@classmethod を付ける
・第1引数は self ではなく cls(クラス自身)
・クラス変数 count(作られたインスタンスの数)の値を return する
・クラス変数は cls.count で読める

💡 どこで使う?

「全インスタンスに共通の情報」を扱ったり、別の作り方(ファクトリメソッド)を用意したりするときに使います。今回のように作った個数を数える、設定を共有する、といったクラス全体に関わる処理に向いています。

⚠️ ポイント:
@classmethod を付けると第1引数が cls になる
cls.count でクラス変数にアクセスできる
ヒントを見る
@classmethod を付けると、第1引数が cls(クラス自身)になるよ。クラス変数は cls.変数名 で読めるので、それをそのまま return しよう。
期待する出力
合計: 2
📄 見本
「答えを見る」を押すと、お手本のコードが出ます。クリックでコピーできます。
💻 コードエディタ
実行すると結果がここに表示されます
正解!見本と同じになりました。
次へ →
🏠 ホームへ

れんしゅうもんだい

☑ 0 / 3 正解 レッスンに戻る

全問正解でクエストクリア!

未挑戦

問題 1: @staticmethod で is_even(n) を作り is_even(4) の結果 True を表示しよう!

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
True
未挑戦

問題 2: @classmethod の from_string で 'たろう,12' を解析して Person を作り name を表示しよう!

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
たろう
未挑戦

問題 3: @staticmethod で celsius_to_f(c) を作り celsius_to_f(100) を表示しよう!

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
212.0
コピーしました!