【Python 内置模块】dataclasses

2024-01-20 00:00:00

问题

当函数需要接收一个结构化的数据时,使用模糊的字典作为参数会降低代码的清晰度。

def print_point(point):
    print(f'x = {point["x"]}')
    print(f'y = {point["y"]}')

这里,point 参数的结构是隐晦的,调用者必须查看函数内部实现才能知道如何传参。

使用 dataclass 优雅定义数据结构

dataclass 装饰器可以自动为类生成 __init____repr__ 等方法,极大地简化了纯数据类的定义。
用它来定义数据结构,能让函数接口一目了然。

from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int

def print_point(point: Point):
    print(f'x = {point.x}')
    print(f'y = {point.y}')

print_point(Point(x=10, y=20))

函数签名 def print_point(point: Point) 直接指明了所需的数据结构,无需额外注释。
此外类型注解让 IDE 能提供智能补全,并方便进行静态类型检查。

返回首页

本文总阅读量  次
皖ICP备17026209号-3
总访问量: 
总访客量: