python中类并不是一个可迭代对象,除非实现__iter__方法,本文亦是如此
# 代码如下
from dataclasses import InitVar, asdict, dataclass, field, is_dataclass
from typing import List, Union
@dataclass
class Info:
owner: list = field(default_factory=list)
xxx_x: InitVar = None
# 该方法可以复制到其他类中
def __iter__(self):
# astuple 或 asdict会递归转化所有属性及子属性,所以使用vars
return iter(vars(self).values())
# 现在可以循环获取到owner和xxx_x了,如下面__post_init__
def __post_init__(self, xxx_x):
"""
dataclass类的init方法,在此实现初始化值处理
"""
for item in self:
if is_dataclass(item):
pass