Мне нужно сослаться на контейнеры внутри dataclass с использованием различных псевдонимов. В этом примере кода я сохраняю сопоставление псевдонимов для container1 и container2 внутри container_map толковый словарь.
from __future__ import annotations
from typing import Any
import dataclasses
@dataclasses.dataclass
class DataClass1:
container1: list[Any] = dataclasses.field(default_factory=list)
container2: list[Any] = dataclasses.field(default_factory=list)
container_map: dict[str, list] = dataclasses.field(init=False)
def __post_init__(self):
self.container_map = {
'name-a': self.container1,
'name-c': self.container2,
'name-d': self.container1
}
# example usage:
dc1 = DataClass1()
dc1.container_map['name-a'].extend([1, 2, 3])
dc1.container_map['name-c'].extend(["hello"])
dc1.container_map['name-d'].extend([5, 6, 7])
print(f"{dc1.container1=} {dc1.container2=}")
выход:
dc1.container1=[1, 2, 3, 5, 6, 7] dc1.container2=['hello']
Является ли это наиболее простым, читаемым и поддерживаемым способом достижения этого сопоставления?
