答案頁 · 12 道題

Python dataclasses練習答案

本頁彙整 Python dataclasses 的 12 道練習。先做練習頁,再回到這裡核對準確答案和原因。

快速答案

本答案頁包含 Python dataclasses 的 4 道選擇題、4 道填空題和 4 道輸出預測題,每題都給出準確答案和簡短解釋。

答案已完整展示,建議先嘗試作答,再用本頁核對。第一次練習最好從互動練習頁開始。

01 · 選擇題

哪個裝飾器會把類變成 dataclass?

  1. @property
  2. @dataclass正確答案
  3. @staticmethod
  4. @classmethod

答案: @dataclass

為什麼: dataclass 裝飾器讀取帶註解的欄位,並生成常用方法。

02 · 選擇題

dataclass 預設會生成什麼?

  1. 資料庫表
  2. __init__、__repr__ 和 __eq__正確答案
  3. 只有 __init__
  4. JSON 檔案

答案: __init__、__repr__ 和 __eq__

為什麼: 預設的 dataclass 提供初始化、顯示和值相等比較。

03 · 選擇題

frozen=True 會阻止什麼?

  1. 給屬性賦值正確答案
  2. 呼叫 asdict
  3. 讀取欄位
  4. 建立實例

答案: 給屬性賦值

為什麼: frozen dataclass 在建立後給屬性賦值會報錯。

04 · 選擇題

程式碼的輸出結果是什麼?

from dataclasses import dataclass
@dataclass
class P:
    x: int
print(P(1))
  1. {'x': 1}
  2. 1
  3. P(1)
  4. P(x=1)正確答案

答案: P(x=1)

為什麼: 自動生成的 repr 包含類名和欄位值。

05 · 填空題

補全提供 dataclass 的模組。

from ____ import dataclass

答案: dataclasses

為什麼: 這個裝飾器來自 dataclasses 模組。

06 · 填空題

補全欄位註解。

from dataclasses import dataclass
@dataclass
class P:
    x: ____

答案: int

為什麼: x 被聲明為整數欄位。

07 · 填空題

補全 active 的預設值。

from dataclasses import dataclass
@dataclass
class U:
    name: str
    active: bool = ____

答案: True

為什麼: 省略 active 時,它預設是 True。

08 · 填空題

補全把實例轉換成字典的函式。

from dataclasses import dataclass, asdict
@dataclass
class P:
    x: int
p = P(2)
print(____(p))

答案: asdict

為什麼: asdict 回傳欄位名和值組成的普通字典。

09 · 輸出預測

螢幕上會顯示什麼?

from dataclasses import dataclass
@dataclass
class P:
    x: int
print(P(2))

答案: P(x=2)

為什麼: 自動生成的 repr 顯示類名和欄位,P(x=2)。

10 · 輸出預測

這段程式碼會輸出什麼?

from dataclasses import dataclass
@dataclass
class P:
    x: int
print(P(1) == P(1))

答案: True

為什麼: dataclass 會比較欄位,所以兩個 x=1 的實例相等。

11 · 輸出預測

執行結果是什麼?

from dataclasses import dataclass
@dataclass
class U:
    name: str
    active: bool = True
print(U("Ada").active)

答案: True

為什麼: active 的預設值是 True,實例可以直接讀取它。

12 · 輸出預測

這段程式列印出什麼?

from dataclasses import dataclass, asdict
@dataclass
class P:
    x: int
print(asdict(P(2)))

答案: {'x': 2}

為什麼: asdict 回傳包含欄位值的普通字典。

先試一遍題目

打開 Python dataclasses 練習頁,用即時回饋回答同樣的 12 道題。

練習本課