使用包含另一个数据类列表的字段重载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类中