インスタンスの属性辞書
次のコードを実行したときの出力として、正しいものを1つ選べ。
class A:
def __init__(self):
self.x = 1
a = A()
a.y = 2
print(vars(a))
- A
{'x': 1} - B
{} - C
{'x': 1, 'y': 2} - D
['x', 'y']
正解と解説を見る
正解:C
vars(obj)(obj.__dict__)は、インスタンスの属性の辞書。__slots__ を使うと、属性の辞書を持たないクラスにできる。
| 順 | 実行する行 | 実行後の変数 |
|---|---|---|
| 1 | `class A:` | — |
| 2 | └ `def __init__(self):` | — |
| 3 | `a = A()` | a = A(vars={'x': 1}) |
| 4 | └ `self.x = 1` | self = A(vars={'x': 1}) |
| 5 | `a.y = 2` | a = A(vars={'x': 1, 'y': 2}) |
| 6 | `print(vars(a))` | a = A(vars={'x': 1, 'y': 2}) |
| 結果 | 実際の出力 | {'x': 1, 'y': 2} |
- A
誤り。
a.y = 2で属性が追加されている。 - B
誤り。属性は存在する。
- C
正しい。
varsはインスタンスの属性の辞書を返す。あとから追加した属性も含まれる。 - D
誤り。
varsは辞書を返す。
このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。