dataclass
次のコードを実行したときの出力として、正しいものを1つ選べ。
from dataclasses import dataclass
@dataclass
class P:
x: int
y: int = 0
print(P(1) == P(1, 0), P(1))
- A
False P(x=1, y=0) - B
True P(x=1, y=0) - C
True <__main__.P object> - D
TypeErrorが発生する。
正解と解説を見る
正解:B
@dataclass は、型注釈つきのフィールドから __init__・__repr__・__eq__ を自動で生成する。
| 順 | 実行する行 | 実行後の変数 |
|---|---|---|
| 1 | `from dataclasses import dataclass` | — |
| 2 | `@dataclass` | — |
| 3 | `class P:` | — |
| 4 | └ `x: int` | — |
| 5 | └ `y: int = 0` | y = 0 |
| 6 | └ `@dataclass` | — |
| 7 | `@dataclass` | — |
| 8 | └ `x: int` | — |
| 9 | └ `@dataclass` | — |
| 10 | └ `y: int = 0` | — |
| 11 | └ `@dataclass` | — |
| 12 | `class P:` | — |
| 13 | `print(P(1) == P(1, 0), P(1))` | — |
| 結果 | 実際の出力 | True P(x=1, y=0) |
- A
誤り。
__eq__が自動で作られ、フィールドの値で比較される。 - B
正しい。
dataclassは__init__・__repr__・__eq__などを自動で作る。 - C
誤り。
__repr__も自動で作られる。 - D
誤り。
yには既定値があるので省略できる。
このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。