2017-08-13 17 views
1

型ヒント(__annotations__)で注釈付けされた別のPython関数を受け入れる関数があります。私はこれらのヒントを使用して、実行時に型チェックをしたいと考えています。問題は、タイプ入力モジュールの型クラスは、(isinstance、issubclassがなくても)使いやすいとは思われません。ですから、私はそれをタイプのオブジェクトに変換し、タイプヒントから型を比較す​​るのにmypy.subtypes.is_subtypeを使用する方法があるのだろうか?Python型から型を比較す​​る

+0

'inspect'モジュールが役に立ちます。 – stamaimer

答えて

0

簡単な答えは簡単な方法はありません。 typingモジュールは、設計上、実行時のチェックに多くの助けを与えることはありません。 PEP 484は、コード 世代このPEPは、(いくつかの状況では、おそらく)型注釈のための標準的な構文を提供することを目指して、より簡単に静的解析とリファクタリングに 開放Pythonコード、 潜在的な実行時の型チェック、および

を語りますタイプ情報を利用する。

これらの目標のうち、静的解析が最も重要です。これには、mypyのようなオフラインタイプのチェッカーのための のサポートと、コード補完のためのIDEと リファクタリングのためにIDEによって使用される標準表記を と提供することが含まれます。

非目標

提案typingモジュールは、実行時の型チェックのためのいくつかの建物 ブロック含まれていますが - 特定を実装するサードパーティ製のパッケージが に開発しなければならないであろう - 特にget_type_hints() 機能を実行時の型チェック機能。例えば、 デコレータやメタクラスを使用します。パフォーマンスのためのタイプヒントの使用 の最適化は、読者の練習として残されています。

+0

はい、私の質問はランタイムの型チェックに 'mypy'を使う方法です。 'typing'はそれを提供するのではなく、' mypy'をコードにプラグインしてその機能を使う方法を理解していますか? – Mitar

関連する問題