Python_dataclass模块
作者:YXN-python 阅读量:6 发布日期:2025-06-12
dataclass 作为标准库中的一个模块,从 Python 3.7 开始引入。随着 Python 版本的不断更新,dataclass 逐渐发展和完善,为开发者提供了一种更便捷的方式来创建和管理数据类。
dataclass 非常适合创建主要用于存储数据的类,可以显著减少样板代码,同时保持代码清晰可读。
from dataclasses import dataclass, field, astuple, asdict
from typing import List
@dataclass(
# frozen=True, # 冻结数据类,防止被修改(只读)
# order=True, # 按照定义顺序排序
)
class Person:
name: str
userid: int = None # 设置默认值
username: str = None
password: str = field(default="123", repr=False) # 不在repr中显示,即隐藏敏感信息
label: List[str] = field(default_factory=lambda: ['mankind']) # default_factory 指定一个函数来生成默认值
# 在 __init__ 后自动调用
def __post_init__(self):
self.label.extend(['handsome', 'generous'])
if __name__ == "__main__":
coin_trans = Person("码海拾贝")
print(coin_trans) # Person(name='码海拾贝', userid=None, username=None, label=['mankind', 'handsome', 'generous'])
# 访问属性
print(coin_trans.name) # 码海拾贝
# 转为元组
print(astuple(coin_trans)) # ('码海拾贝', None, None, '123', ['mankind', 'handsome', 'generous'])
# 转为字典
print(asdict(coin_trans)) # {'name': '码海拾贝', 'userid': None, 'username': None, 'password': '123', 'label': ['mankind', 'handsome', 'generous']}
YXN-python
2025-06-12