使用包含另一个数据类列表的字段重载Python数据类

使用包含另一个数据类列表的字段重载Python数据类,python,python-3.x,list,iterator,python-dataclasses,Python,Python 3.x,List,Iterator,Python Dataclasses,我不知道如何正确地为我的整个图像类重载迭代器 from dataclasses import dataclass, astuple from typing import List import numpy as np @dataclass(frozen=True) class ActImage: __slots__ = ['name', 'action'] name: np.ndarray action: np.ndarray def __iter__(sel

我不知道如何正确地为我的整个图像类重载迭代器

from dataclasses import dataclass, astuple
from typing import List
import numpy as np

@dataclass(frozen=True)
class ActImage:
    __slots__ = ['name', 'action']
    name: np.ndarray
    action: np.ndarray

    def __iter__(self):
        return iter(astuple(self))


@dataclass(frozen=True)
class WholeImage:
    __slots__ = ['value', 'x_axis', 'y_axis', 'act']
    value: np.ndarray
    x_axis: List[np.ndarray]
    y_axis: List[np.ndarray]
    act: List[ActImage]

    def __iter__(self):
        yield from (self.value, *self.x_axis, *self.y_axis, *self.act)
现在的工作方式是,它返回
value
x\u轴和
y\u轴列表中元素的numpy ndarray,但是
ActImage
列表中元素的
instances

我希望它的行为方式是返回所有数据数组,包括
ActImage.name
ActImage.action
中的“嵌套”数据数组,如下伪代码所示:

def __iter__(self):
   yield from (self.value, *self.x_axis, *self.y_axis, 
               self.act[x].name, self.act[x].action # for x in range(len(act))
               ) 
我希望我的代码尽可能通用,因为将来可能会将新字段(也是np.ndarray类型)添加到ActImage类中