答案页 · 12 道题

Python dataclasses练习答案

本页汇总 Python dataclasses 的 12 道练习。先做练习页,再回到这里核对准确答案和原因。

快速答案

本答案页包含 Python dataclasses 的 4 道选择题、4 道填空题和 4 道输出预测题,每题都给出准确答案和简短解释。

答案已完整展示,建议先尝试作答,再用本页核对。第一次练习最好从互动练习页开始。

01 · 选择题

哪个装饰器会把类变成 dataclass?

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

答案: @dataclass

为什么: dataclass 装饰器读取带注解的字段,并生成常用方法。

02 · 选择题

dataclass 默认会生成什么?

  1. JSON 文件
  2. 数据库表
  3. __init__、__repr__ 和 __eq__正确答案
  4. 只有 __init__

答案: __init__、__repr__ 和 __eq__

为什么: 默认的 dataclass 提供初始化、显示和值相等比较。

03 · 选择题

frozen=True 会阻止什么?

  1. 调用 asdict
  2. 给属性赋值正确答案
  3. 创建实例
  4. 读取字段

答案: 给属性赋值

为什么: frozen dataclass 在创建后给属性赋值会报错。

04 · 选择题

代码的输出结果是什么?

from dataclasses import dataclass
@dataclass
class P:
    x: int
print(P(1))
  1. P(1)
  2. {'x': 1}
  3. 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 道题。

练习本课