dataclasses中asdict的用法

今天读源码读到这个函数的用法,它用在声明的dataclass类里面,将dataclass声明的属性变成字典返回。

有以下几点可能需要注意:

第一个是直接赋值的变量不会被asdict返回,只有声明的变量才行。

from dataclasses import asdict, dataclass

@dataclass
class Test:
    a : int = 1
    b = 2
    
    def mydict(self):
        print(asdict(self))
        

test = Test()
test.mydict()

# {'a': 1} b没有返回

第二个是,使用魔术方法__post_init__声明变量也不被asdict返回,__post_init__用于在类执行__init__后自动执行。

from dataclasses import asdict, dataclass

@dataclass
class Test:
    a : int = 1
    b : int = 2
    def __post_init__(self):
        c : int = 3
        self.d = 4
    
    def mydict(self):
        print(asdict(self))
        

test = Test()
test.mydict()

# {'a': 1, 'b': 2} c和d都不被返回

官方doc在此:dataclasses — Data Classes — Python 3.12.6 documentation

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值