python @dataclass的作用
时间: 2024-03-02 18:54:18 浏览: 28
`@dataclass` 是 Python 3.7 引入的一个装饰器,它可以自动为我们生成一些常用的方法,如 `__init__()`,`__repr__()`,`__eq__()` 等,使得我们能够更方便地创建类。使用 `@dataclass` 装饰器后,我们只需要定义一些类变量,就可以自动生成这些方法,减少了我们的代码量,提高了代码的可读性。
举个例子,如果我们要创建一个简单的类来表示一个人的姓名和年龄,可能需要写以下代码:
```python
class Person:
def __init__(self, name: str, age: int):
self.name = name
self.age = age
def __repr__(self):
return f"Person(name='{self.name}', age={self.age})"
def __eq__(self, other):
if not isinstance(other, Person):
return False
return self.name == other.name and self.age == other.age
```
使用 `@dataclass` 装饰器后,我们只需要如下定义:
```python
from dataclasses import dataclass
@dataclass
class Person:
name: str
age: int
```
这样就自动为我们生成了 `__init__()`,`__repr__()`,`__eq__()` 等方法,我们不需要再手动编写这些方法的代码。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)