And*_*ndy 2 python static-typing python-3.x
我对UnionPython 静态类型中的用法有点困惑。
class A():
foo: int = 10
class B():
bar: str = 'hello'
def get_object() -> Union[A, B]:
return B()
var = get_object()
var.bar
Run Code Online (Sandbox Code Playgroud)
上面的片段返回 error: Item "A" of "Union[A, B]" has no attribute "bar"
文档状态
Intersection 和 Union 之间的交互很复杂,但如果您了解正则集合的交集和 union 之间的交互,应该不会感到惊讶
这让我相信可以像使用or类型一样使用类型变量,而类型检查器不会抛出错误Union[A, B]AB。这不正确吗?
如果是这样,我怎样才能实现模仿这一点的功能?(即 from 的值get_object可以用作类型AorB)
是Union[A,B]意味着值可以是任一类型的A 或类型的B..
但这并不意味着你可以把价值,如果它是A或者B在你的选择。这正是交叉类型的使用。
当您有 a 时,Union[A,B]您必须检查该值是否为A,如果是,则像这样处理它A,或者如果是B,则像 a 一样处理它B。优点是你知道它不会是其他类型C,所以你有一个定义的类型列表来检查。但是您仍然需要以某种方式进行检查。
| 归档时间: |
|
| 查看次数: |
402 次 |
| 最近记录: |