首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >访问类型为Union的变量的属性会引发错误

访问类型为Union的变量的属性会引发错误
EN

Stack Overflow用户
提问于 2018-09-25 08:09:23
回答 1查看 600关注 0票数 2

我对Union在Python中的用法有点困惑。

代码语言:javascript
运行
复制
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的值可以用作AB类型的值)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-25 08:32:41

是的,Union[A,B]意味着值可以是,也可以是类型的A ,也可以是B类型的

这确实是而不是的意思,即您可以将该值视为您选择的AB。这正是交集类型的使用。

当您有一个Union[A,B]时,您必须检查该值是否为A,如果为A,则将其处理为A,或者它是否为B,并将其处理为B。优点是您知道它不会是其他类型的C,因此您有一个要检查的类型的定义列表。但你还是需要以某种方式检查。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52493462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档