键入提示为逻辑和多种类型

时间:2017-04-17 14:41:06

标签: python python-3.x

我知道Union允许您指定逻辑或多种类型。我想知道是否有办法为逻辑做类似的事情,比如:

def foo(x: And[Bar, Baz]):

我知道一个选项就是明确定义一个继承自BarBaz的新类型,如下所示:

class BarAndBaz(Bar, Baz):
    ...

def foo(x: BarAndBaz):

在我的上下文中,该选项并不理想。

1 个答案:

答案 0 :(得分:3)

基于@deceze和@JimFasarakisHilliard的有用评论:

出于所有意图和目的,您可以使用Union,就好像And一样,因为对于BarBaz类型,好的IDE应自动完成将变量声明为Union[Bar, Baz]类型。

这样的事情也有助于提高可读性:

# IDE should treat And/Union equivalently; use And[T, U] to communicate
# that a variable is expected to be an instance of T *and* U, and
# Union[T, U] to communicate that it is expected to be an instance of T
# *or* U.
And = Union  

在我的特定情况下,我的IDE(PyCharm)行为不正常,因为它需要更新和重启。