Python 3 エンジニア認定実践試験 / Python のクラスと型ヒント ・ 無料問題 2/5
Python のクラスと型ヒント 問題2[dataclass]
次のコードを実行したときの出力を選んでください。
from dataclasses import dataclass, field@dataclassclass Item: name: str price: int = 0 tags: list[str] = field(default_factory=list)a = Item("pen", 100)b = Item("pen", 100)a.tags.append("sale")print(a)print(a == b, b.tags)選択肢
- A.Item(name='pen', price=100, tags=['sale']) True []
- B.<__main__.Item object> False []
- C.Item(name='pen', price=100, tags=['sale']) False ['sale']
- D.Item(name='pen', price=100, tags=['sale']) False []正解
解説実行して確認済み
@dataclass を付けると、型ヒント付きのクラス変数をもとに __init__・__repr__・__eq__ などが自動で作られます。__repr__ は Item(name='pen', price=100, tags=['sale']) の形になり、__eq__ は全フィールドを比べます。field(default_factory=list) はインスタンスごとに新しいリストを作るので、b.tags は空のままで、tags が違うため a == b は False です。
この問題の答えは、試験の対象バージョンでコードを実際に実行して確かめています。確かめ方は運営者情報に書いています。
Python 3 エンジニア認定実践試験 の他の分野の無料問題
ここで公開しているのは無料範囲の問題です。無料登録すると、解答の記録・ダッシュボードでの復習ができ、 プレミアムならこの問題セットの全問題と本番形式の模擬試験も解けます。