クラス変数の更新
次のコードを実行したときの出力として、正しいものを1つ選べ。
class C:
n = 0
def __init__(self):
C.n += 1
C(); C()
print(C.n)
- A
0 - B
2 - C
1 - D
AttributeErrorが発生する。
正解と解説を見る
正解:B
クラス変数は、すべてのインスタンスで共有される。クラス名.変数 で更新すると、全体に反映される。
| 順 | 実行する行 | 実行後の変数 |
|---|---|---|
| 1 | `class C:` | — |
| 2 | └ `n = 0` | n = 0 |
| 3 | └ `def __init__(self):` | — |
| 4 | `C(); C()` | — |
| 5 | └ `C.n += 1`(2回) | — |
| 6 | `print(C.n)` | — |
| 結果 | 実際の出力 | 2 |
- A
誤り。
__init__で増える。 - B
正しい。インスタンスを作るたびに、クラス変数
nが 1 増える。 - C
誤り。2 回インスタンスを作っている。
- D
誤り。クラス変数はクラスから参照できる。
このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。