dataclass类的优势
- 可读性强
- 操作灵活
- 轻量
应用场景
- 创建对象
- 完美融合平台开发ORM框架
实例
- 加类装饰器@dataclass
- 为类变量添加类型提示
from dataclasses import dataclass
@dataclass
class Cat:
name:str
age:int
colour:str
if __name__ == '__main__':
cat = Cat('大白',12,'白色')
print(cat)
field用法:用来制定类型或者传递默认值
from dataclasses import dataclass, field
@dataclass
class Cat:
name: str
age: int
colour: str
num_cat: int = field(default=3)
#可变参数list,dict需要default_factory来指定类型,或者默认值
cat_list: list = field(default_factory=list)
if __name__ == '__main__':
cat = Cat('大白', 12, '白色')
print(cat)
#运行结果是:Cat(name='大白', age=12, colour='白色', num_cat=3, cat_list=[])
init用法:
- init = False,则该默认值的实例化后无法被更改
- init = True,则该默认值的实例化可以被更改
from dataclasses import dataclass, field
@dataclass
class Cat:
name: str
age: int
colour: str
num_cat: int = field(default=3,init=False)
#可变参数list,dict需要default_factory来指定类型,或者默认值
cat_list: list = field(default_factory=list)
if __name__ == '__main__':
cat = Cat('大白', 12, '白色',4)
print(cat)
运行结果是:Cat(name='大白', age=12, colour='白色', num_cat=3, cat_list=4)
from dataclasses import dataclass, field
@dataclass
class Cat:
name: str
age: int
colour: str
num_cat: int = field(default=3,init=True)
#可变参数list,dict需要default_factory来指定类型,或者默认值
cat_list: list = field(default_factory=list)
if __name__ == '__main__':
cat = Cat('大白', 12, '白色',4)
print(cat)
#运行结果是:
Cat(name='大白', age=12, colour='白色', num_cat=4, cat_list=[])
repr用法:
- repr = True ,则该属性在打印的时候可以被打印出来
- repr = False,则该属性在打印的时候不可以被打印出来
from dataclasses import dataclass, field
@dataclass
class Cat:
name: str
age: int
colour: str
num_cat: int = field(default=3,repr=True)
#可变参数list,dict需要default_factory来指定类型,或者默认值
cat_list: list = field(default_factory=list)
if __name__ == '__main__':
cat = Cat('大白', 12, '白色',4)
print(cat)
运行结果是:Cat(name='大白', age=12, colour='白色', num_cat=4, cat_list=[])
from dataclasses import dataclass, field
@dataclass
class Cat:
name: str
age: int
colour: str
num_cat: int = field(default=3,repr=False)
#可变参数list,dict需要default_factory来指定类型,或者默认值
cat_list: list = field(default_factory=list)
if __name__ == '__main__':
cat = Cat('大白', 12, '白色',4)
print(cat)
运行结果是:Cat(name='大白', age=12, colour='白色', cat_list=[])
asdict用法:可以将对象实例转化为字典的形式
from dataclasses import dataclass, field,asdict
@dataclass
class Cat:
name: str
age: int
colour: str
num_cat: int = field(default=3,repr=True)
#可变参数list,dict需要default_factory来指定类型,或者默认值
cat_list: list = field(default_factory=list)
if __name__ == '__main__':
cat = Cat('大白', 12, '白色',4)
print(cat)
print(asdict(cat))
运行结果:
Cat(name='大白', age=12, colour='白色', num_cat=4, cat_list=[])
{'name': '大白', 'age': 12, 'colour': '白色', 'num_cat': 4, 'cat_list': []}