Python 模擬試験

Python実践 模擬試験 第6回 問26・9章 データ型とアルゴリズム(functools)

cached_property

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

import functools
class A:
    n = 0
    @functools.cached_property
    def v(self):
        A.n += 1
        return 7
a = A()
a.v
a.v
print(A.n)
  1. A

    1

  2. B

    2

  3. C

    0

  4. D

    7

正解と解説を見る

正解:A

functools.cached_property(Python 3.8 以降)は、属性として最初に参照したときに計算し、結果をキャッシュする。重い計算を遅延して、1 回だけ行う。

順実行する行実行後の変数
1`import functools`—
2`class A:`—
3└ `n = 0`n = 0
4└ `@functools.cached_property`—
5└ `def v(self):`—
6└ `@functools.cached_property`—
7└ `def v(self):`—
8`a = A()`—
9`a.v`a = A(vars={'v': 7})
10└ `A.n += 1`—
11└ `return 7`—
12`a.v`a = A(vars={'v': 7})
13`print(A.n)`—
結果実際の出力1

学習のポイント:値が変わりうるなら、通常の property。

この問題を演習で解く →

問題一覧へ

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