Имеются классы.
@dataclass
class A:
x: int
y: str
z: float
class B:
x: int
y: str
u: str
def __init__(self, **kwargs):
self.__dict__.update(kwargs)
def __repr__(self):
return str(self.__dict__)
Нужно написать мэпперы, которые помогут копировать данные между объектами этих классов. Представим что методов много, и банальный перебор полей не хотелось бы делать и поддерживать:
a = A(x=1, y='a', z=2.2)
b = B(x=a.x, y=a.y, u='b')
Какие паттерны тут существуют?
Словарь распаковывать или что-то еще есть?
b = B(**{k:v for k,v in a.__dict__.items() if k in ['x', 'y']}, u='b')
А можно организовать волшебный метод, который может организовать присвоение:
b=a
b=B(a)