python-dataclass类

dataclass类的优势

  • 可读性强
  • 操作灵活
  • 轻量

应用场景

  • 创建对象
  • 完美融合平台开发ORM框架

实例

  1. 加类装饰器@dataclass
  2. 为类变量添加类型提示
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': []}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值