python3 中的装饰器总结
前言
python3 中有很多好用的装饰器,本编文章作为个人笔记使用,随时更新。
正文
1. @dataclass
内容来源:chatgpt3.5
@dataclass是一个装饰器,用于给类提供自动生成属性、初始化方法和其他常见方法的功能。它可以简化类的定义,并减少重复的代码。
@dataclass 在 Python 中的作用类似于 Java 中的 @Data 注解。它们的目标都是简化类的定义,并自动为类生成常见的方法。
在 Java 中,@Data 注解可以用于类上,它会自动为类生成 getter、setter、equals、hashCode 和 toString 方法。而在 Python 中,@dataclass 装饰器可以用于类上,它会自动为类生成 init、repr、eq 等方法,以及属性的 getter 和 setter 方法。
因此,@dataclass 在 Python 中与 Java 中的 @Data 注解具有相似的功能,都是用于自动生成常见的方法,减少重复的代码。它们都可以提升开发效率,使代码更加简洁和易读。
例如,使用@dataclass装饰器可以将以下代码转换为数据类:
from dataclasses import dataclass
@dataclass
class Person:
name: str
age: int
def test_dataclass():
person = Person("John", 30)
print(person.name)
print(person.age)
print(vars(person))
person2 = Person("Tom", 20)
print(person2.name)
print(person2.age)
print(vars(person2))
if __name__ == "__main__":
test_dataclass()