本答案頁包含 Python dataclasses 的 4 道選擇題、4 道填空題和 4 道輸出預測題,每題都給出準確答案和簡短解釋。
答案已完整展示,建議先嘗試作答,再用本頁核對。第一次練習最好從互動練習頁開始。
哪個裝飾器會把類變成 dataclass?
答案: @dataclass
為什麼: dataclass 裝飾器讀取帶註解的欄位,並生成常用方法。
dataclass 預設會生成什麼?
答案: __init__、__repr__ 和 __eq__
為什麼: 預設的 dataclass 提供初始化、顯示和值相等比較。
frozen=True 會阻止什麼?
答案: 給屬性賦值
為什麼: frozen dataclass 在建立後給屬性賦值會報錯。
程式碼的輸出結果是什麼?
from dataclasses import dataclass
@dataclass
class P:
x: int
print(P(1))答案: P(x=1)
為什麼: 自動生成的 repr 包含類名和欄位值。
補全提供 dataclass 的模組。
from ____ import dataclass答案: dataclasses
為什麼: 這個裝飾器來自 dataclasses 模組。
補全欄位註解。
from dataclasses import dataclass
@dataclass
class P:
x: ____答案: int
為什麼: x 被聲明為整數欄位。
補全 active 的預設值。
from dataclasses import dataclass
@dataclass
class U:
name: str
active: bool = ____答案: True
為什麼: 省略 active 時,它預設是 True。
補全把實例轉換成字典的函式。
from dataclasses import dataclass, asdict
@dataclass
class P:
x: int
p = P(2)
print(____(p))答案: asdict
為什麼: asdict 回傳欄位名和值組成的普通字典。
螢幕上會顯示什麼?
from dataclasses import dataclass
@dataclass
class P:
x: int
print(P(2))答案: P(x=2)
為什麼: 自動生成的 repr 顯示類名和欄位,P(x=2)。
這段程式碼會輸出什麼?
from dataclasses import dataclass
@dataclass
class P:
x: int
print(P(1) == P(1))答案: True
為什麼: dataclass 會比較欄位,所以兩個 x=1 的實例相等。
執行結果是什麼?
from dataclasses import dataclass
@dataclass
class U:
name: str
active: bool = True
print(U("Ada").active)答案: True
為什麼: active 的預設值是 True,實例可以直接讀取它。
這段程式列印出什麼?
from dataclasses import dataclass, asdict
@dataclass
class P:
x: int
print(asdict(P(2)))答案: {'x': 2}
為什麼: asdict 回傳包含欄位值的普通字典。
先試一遍題目
打開 Python dataclasses 練習頁,用即時回饋回答同樣的 12 道題。