Python — обращение к контейнерам внутри класса данных под разными именами

Мне нужно сослаться на контейнеры внутри 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']

Является ли это наиболее простым, читаемым и поддерживаемым способом достижения этого сопоставления?

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *