2017-12-24 5 views
1

型を取り、その型の要素を再帰的に生成する関数があります。例えば、typing.NamedTuple秒間、私はこれを実行します。ただし要素型の型付けを取得する。

def make_type(type_): 
    ... 
    if issubclass(type_, typing.NamedTuple): 
    return type_(**{f: make_type(t) for f, t in type_._field_types.items()}) 

を、私は彼らが_field_typesと同等のものを持っていないように見えますよう、typing.Tuple Sを処理するかどうかはわかりません。例えば、私がTuple[int, int]を持っていたなら、私は(int, int)に戻っておきたいと思います。

Pair = typing.Tuple[int, int] 
Pair.__args__ # (int, int) 

が、私はこれがちょうどTuple型コンストラクタに渡される引数リストであることを前提としています

答えて

1

は、私はちょうど私のタイプの__args__フィールドを使用することができ判明します。少し文書化されていませんが、まあまあです。

関連する問題