[本文出自天外归云的博客园]
在 Python 3.7+ 中,dataclasses 是一个非常优雅的工具,可以轻松地创建简单的类,并自动生成常见的类方法,比如 __init__
、__repr__
等。以下是一些使用 dataclasses 时需要注意的事项:
- 导入 dataclasses 模块
在使用 dataclasses 之前,需要先导入 dataclasses 模块。例如:
from dataclasses import dataclass
- 使用
@dataclass
装饰器
对于需要使用 dataclasses 的类,只需要在类上加上 @dataclass
装饰器即可自动为其生成常见的类方法。例如:
@dataclass
class Person:
name: str
age: int
上述 Person
类使用了 @dataclass
装饰器,并指定了它的两个属性 name
和 age
。现在,dataclasses 将自动生成 __init__
、__repr__
等类方法。因此,创建一个 Person
对象时不再需要手动编写这些方法。例如:
p1 = Person("Alice", 25)
print(p1)
输出结果为:
Person(name='Alice', age=25)
- 使用默认值参数
您可以在使用 @dataclass
装饰器时提供默认值参数。例如:
@dataclass
class Person:
name: str = "Unknown"
age: int = 0
这将为 Person
类的 name
和 age
属性提供默认值,从而使它们非必需。当手工创建 Person
对象时,如果指定了 name
和 age
的值,则使用指定值,如果没有指定,则使用默认值。例如:
p1 = Person("Alice", 25)
print(p1) # Person(name='Alice', age=25)
p2 = Person()
print(p2) # Person(name='Unknown', age=0)
- 使用类型提示
在 dataclasses 中,您可以像平常写 Python 代码时一样使用类型提示。例如:
from typing import List
@dataclass
class Person:
name: str
age: int
hobbies: List[str]
上述 Person
类的 hobbies
属性的类型是 List[str]
。这将确保只能为 hobbies
属性分配一个字符串列表。如果有任何类型错误,则会在类型检查阶段抛出错误。此外,您还可以使用其他类型提示,例如 Tuple
、Set
等。
- 使用
asdict
方法
dataclasses 还提供了一个称为 asdict
的方法,它将 dataclass 对象转换为一个 Python 字典。例如:
p1 = Person("Alice", 25, ["reading", "traveling"])
print(p1) # Person(name='Alice', age=25, hobbies=['reading', 'traveling'])
p1_dict = p1.asdict()
print(p1_dict) # {'name': 'Alice', 'age': 25, 'hobbies': ['reading', 'traveling']}
上述代码将 Person
对象 p1
转换为一个 Python 字典。由于 hobbies
是一个列表,因此转换后的字典中的值也是一个列表。
总之,在 Python 3.7+ 中,dataclasses 是一个非常优雅的工具,可以轻松地创建简单的类,并自动生成常见的类方法。通过使用 dataclasses,您可以节省大量的时间和精力。
标签:p1,name,dataclasses,age,Person,优雅,python3.7,dataclass From: https://www.cnblogs.com/LanTianYou/p/17395999.html