2017-04-17 13 views
1

Unionは、論理型または複数型の指定が可能です。私は1つのオプションだけで明示的にBarBazの両方から継承する新しいタイプを定義することであることを知っている論理型と複数の型のヒント

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

、:のような論理と、何かのために類似した何かをする方法がある場合、私は思ったんだけど

class BarAndBaz(Bar, Baz): 
    ... 

def foo(x: BarAndBaz): 

私の考えでは、このオプションは理想的ではありません。すべての意図や目的のために

、それはAndをしたかのようにあなたがタイプBar用すべきオートコンプリートとBazあなたであれば良いIDE以来、Unionを使用することができます。@decezeと@JimFasarakisHilliardから有益なコメントをもとに

+0

タプルを意味しますか? –

+0

@JoshLeeいいえ。自分の投稿を編集して、私が意味することを明確にしました。 – dshin

+0

'Union'はすでに、オブジェクトがどちらか/すべての型のメソッドを持つことができます。すべての意図と目的のために、それは* and *です。あなたはそれを知っていますか、あるいはあなたが* "X __and__ Y"から*継承する*を表現する必要があるより具体的な理由がありますか? – deceze

答えて

1

変数が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)が正常に動作していませんでした。

関連する問題