python 技巧

【小记】迭代类中的属性

简单记录

systemime
2021-05-06
1 min

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
上次编辑于: 5/15/2021, 2:22:50 AM