Python 模擬試験

Python実践 模擬試験 第3回 問11・4章 Pythonのクラス(クラスの定義)

classmethod と staticmethod

次のコードを実行したときの出力として、正しいものを1つ選べ。

class A:
    @classmethod
    def make(cls):
        return cls()
    @staticmethod
    def f(x):
        return x * 2
class B(A):
    pass
print(type(B.make()).__name__, A.f(3))
  1. A

    A 6

  2. B

    B 3

  3. C

    B 6

  4. D

    TypeError が発生する。

正解と解説を見る

正解:C

@classmethod の第 1 引数は呼び出されたクラス、@staticmethod は特別な引数を取らない。代替コンストラクタには classmethod を使う。

順実行する行実行後の変数
1`class A:`—
2└ `def make(cls):`—
3└ `@classmethod`—
4└ `def make(cls):`—
5└ `@classmethod`—
6└ `def make(cls):`—
7└ `@staticmethod`—
8└ `def f(x):`—
9└ `@staticmethod`—
10└ `def f(x):`—
11`class B(A):`—
12└ `pass`—
13`print(type(B.make()).__name__, A.f(3))`—
14└ `return cls()`—
15└ `return x * 2`x = 3
結果実際の出力B 6

学習のポイント:インスタンスメソッドは、第 1 引数が self。

この問題を演習で解く →

問題一覧へ

このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。