Python 模擬試験

Python実践 模擬試験 第2回 問12・4章 Pythonのクラス(特殊メソッド)

__add__

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

class V:
    def __init__(self, x):
        self.x = x
    def __add__(self, o):
        return V(self.x + o.x)
print((V(1) + V(2)).x)
  1. A

    3

  2. B

    TypeError が発生する。

  3. C

    12

  4. D

    <V object>

正解と解説を見る

正解:A

演算子は特殊メソッド(__add__・__eq__・__len__ など)で振る舞いを定義できる。

順実行する行実行後の変数
1`class V:`—
2└ `def __init__(self, x):`—
3└ `def __add__(self, o):`—
4`print((V(1) + V(2)).x)`—
5└ `self.x = x`(2回)self = V(vars={'x': 2}), x = 2
6└ `return V(self.x + o.x)`self = V(vars={'x': 1}), o = V(vars={'x': 2})
7└ `self.x = x`self = V(vars={'x': 3}), x = 3
結果実際の出力3

学習のポイント:__repr__ はデバッグ向けの表現、__str__ は読み手向けの表現。

この問題を演習で解く →

問題一覧へ

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