2017-04-17 22 views
1

我知道Union允許您指定的邏輯或多種類型的。我不知道是否有一種方法做一些事情的邏輯和,像類似:類型提示,邏輯和多種類型的

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

我知道,一個選擇是僅明確地定義一個新類型,來自BarBaz繼承,像這樣:

class BarAndBaz(Bar, Baz): 
    ... 

def foo(x: BarAndBaz): 

在我的背景下,選擇不理想。

+0

你的意思是元組? –

+0

@JoshLee號我編輯我的帖子,使其更清楚我的意思。 – dshin

+0

'聯合'已經意味着該對象可能/將具有任一/所有類型的方法。對於所有意圖和目的,*都是*和「。您是否意識到這一點,或者您是否有更具體的理由需要表達*「從X繼承___和Y」*? – deceze

回答

1

基於從@deceze和@JimFasarakisHilliard有益的意見:

對於所有意圖和目的,你可以使用Union就好像它是And,因爲一個好的IDE應自動完成類型BarBaz如果您聲明一個變量類型爲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)不正確,因爲它需要更新和重新啓動行爲。