2017-02-02 8 views
1

タイプヒントに使用するカスタムメタタイプを定義しようとしています。たとえば、タイプヒントのカスタムメタタイプ

print(Tuple[int, str, bool]) 
print(CustomType[int, str, bool]) 

最初の行は明らかにうまく動作します。 CustomTypeをどのように実装すれば動作するのでしょうか?私はこれを試みた:

class CustomType(Tuple): 
    pass 

そしてエラーTypeError: __main__.CustomType is not a generic classを得る。 私の目標は、追加のクラスメソッドでタプルを特殊化することです。

答えて

0

AFAIKこれは可能ですが、制限された形式では、可変数の引数を指定するのではなく、 argsの。

あなたは基本クラスとしてそれを提供するときは、Tupleに、いくつかの型変数を提供する必要があります:

from typing import Tuple, TypeVar 
T1, T2, T3 = TypeVar('T1'), TypeVar('T2'), TypeVar('T3') 

class CustomType(Tuple[T1, T2, T3]): 
    pass 

print(CustomType[int, str, bool]) 
# __main__.CustomType[int, str, bool] 

これは今それに添付3型を持つことができる、あなたがカスタムタイプを作成する必要があります2タイプの場合はCustomType(Tuple[T1, T2])、などとなります。さておき、サブクラスTuple(及びCallable)のサポートがIssue 299に添加し3.6+で利用できたとして

関連する問題