インスタンス属性とクラス属性
次のコードを実行したときの出力として、正しいものを1つ選べ。
class A:
x = 1
a = A()
a.x = 2
print(A.x, a.x)
- A
2 2 - B
1 1 - C
1 2 - D
2 1
正解と解説を見る
正解:C
インスタンスへの代入は、インスタンス属性を作る(クラス属性を隠す)。クラス属性を変更するには、クラス名.属性 = 値。
| 順 | 実行する行 | 実行後の変数 |
|---|---|---|
| 1 | `class A:` | — |
| 2 | └ `x = 1` | x = 1 |
| 3 | `a = A()` | — |
| 4 | `a.x = 2` | a = A(vars={'x': 2}) |
| 5 | `print(A.x, a.x)` | a = A(vars={'x': 2}) |
| 結果 | 実際の出力 | 1 2 |
- A
誤り。クラス属性は変わらない。
- B
誤り。インスタンス属性が優先される。
- C
正しい。インスタンスに代入すると、そのインスタンスだけの属性が作られ、クラス属性はそのまま。
- D
誤り。値が逆。
このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。