Я немного озадачен использованием Union
в статической типизации Python.
class A():
foo: int = 10
class B():
bar: str = 'hello'
def get_object() -> Union[A, B]:
return B()
var = get_object()
var.bar
Приведенный выше фрагмент кода возвращает error: Item "A" of "Union[A, B]" has no attribute "bar"
Состояние документов
Взаимодействие между пересечением и объединением является сложным, но это не должно вызывать удивления, если вы понимаете взаимодействие между пересечениями и объединениями регулярных множеств
, что приводит меня к мысли, что переменнаятипа Union[A, B]
может использоваться, как если бы он был типа A
или B
, без ошибок проверки типа .Это неверно?
Если да, то как мне добиться функциональности, которая бы имитировала это?( то есть значение из get_object
можно использовать, как если бы оно было типа A
или B
)
Спасибо за вашу помощь, дайте мне знать, если вам нужны какие-либо разъяснения.