Код: Выделить всё
from attr import dataclass
from typing import Any
@dataclass
class Params:
A: dict[str,Any]
B: dict[str,Any]
@dataclass
class SomeFactory:
A_class: type
B_class: type
params: Params
@property
A(self):
return self.A_class(**self.params.A)
# similar for B
factory = SomeFactory(
A_class = classC,
B_class = classD,
Params(A={"Aparam1": "example1"}, B={"Bparam1": "example2"})
)
Код: Выделить всё
!SomeFactory
A: !classC
Aparam1: example1
B: !classD
Bparam1: example2
Код: Выделить всё
class SomeFactory:
# ...
@classmethod
def to_yaml(cls, representer, node):
return representer.representer_mapping(
"!" + cls.__name__,
{
"A": representer.representer_mapping(
"!" + node.A_class.__name__,
node.params.A,
),
"B": representer.representer_mapping(
"!" + node.B_class.__name__,
node.params.B,
),
}
)
Код: Выделить всё
ruamel.yaml.representer.RepresenterError:
cannot represent an object: MappingNode(tag='!classC', value=[("Aparam1", "example1")])
Подробнее здесь: https://stackoverflow.com/questions/793 ... rows-error
Мобильная версия