Я опытный Java разработчик, который недавно поднял Python. Несмотря на то, что я попробовал кое-что, я не смог найти в Интернете решения для следующей проблемы:
class A()
def __init__(self, **data: Any) -> None:
self.a1 = data['a1']
self.a2 = data['a2']
a1: str
a2: str
class B(A)
def __init__(self, **data: Any) -> None:
super().__init__(**data)
self.b1 = data['b1']
b1: str
def map_to_a(some_data) -> A:
return A(a1=some_data['a1'], a2=some_data['a2'])
def map_to_b(some_data) -> B:
b: B = map_to_a(some_data)
b.b1 = some_data['b1'] # ==> ERROR happens here since b is of type A because map_to_a returns A so b
return b
Результат:
ValueError: "A" object has no field "b1"
Как я могу решить это легко? Есть ли способ, может быть, может быть, бросить мой A на объект B? Я не могу найти решение онлайн.
Причина, по которой я так хочу, состоит в том, что мне не нужно отображать все мои поля типа объекта дважды (один раз в map_to_a и один раз в map_to_b).