本帖最后由 Solowang 于 2024-11-15 16:28 编辑
dataclasses它提供了一个装饰器和一些函数,用于自动为用户定义的数据类生成特殊方法。数据类主要用于存储数据,就像普通的类一样,但它通过简洁的语法减少了样板代码的数量。
前后对比:# 没有使用dataclasses之前
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
# 使用dataclasses之后
from dataclasses import dataclass
@dataclass
class Person:
name: str
age: int
使用注解dataclass放在类名称上面 可以不在类中写init方法 直接调用类可直接初始化
[Python] 纯文本查看 复制代码 from dataclasses import dataclass
@dataclass
class Friend():
name: str
age: int
height: int = 175
weight: int = 50
if __name__ == '__main__':
# friend= Friend().from_dict(name="张三",age=12)
# print(friend)
a = Friend("zhangsan", 12)
print(a.__str__())
dataclass中的一些函数方法
[Python] 纯文本查看 复制代码 from dataclasses import dataclass, asdict, astuple, replace
# dataclass, asdict, astuple, replace
@dataclass
class Friend():
name: str
age: int
height: int = 175
weight: int = 50
@classmethod
def from_dict(cls, d):
"""
desc: 字典转换成类对象
:param d: dict_type
:return: object_type
"""
return Friend(**d)
def to_dict(self):
"""
desc: 对象转字典
:return: dict_type
"""
return asdict(self)
def to_tuple(self):
"""
desc: 对象转元组
:return: tuple_type
"""
return astuple(self)
def to_replace(self,chage_data):
"""
desc: 内容替换
:return: object_type
"""
return replace(self,**chage_data)
if __name__ == '__main__':
# 注: 可变参数**args传入参数是字段类型 {a:b}
friend = Friend.from_dict({"name": "zhangsan", "age": 12})
print("字典转对象:",friend)
friend_dict=friend.to_dict()
print("对象转字典",friend_dict)
friend_tuple=friend.to_tuple()
print("对象转元组",friend_tuple)
friend_replace=friend.to_replace({"name":"lisi","age":12})
print(friend_replace)
|