2015-10-20 11 views
13
def someproperty(self, value): 
    """ 
    :type value: int 
    """ 
    assert isinstance(value, int) 
    # other stuff 

ユーザが値をint以外の値に設定したときにPycharmをアサートするようにしたいと思います。私はすでにタイプヒントを使用しています。この機能を利用する別の方法はありますか?あなたが提供できるどんな洞察にも前もって感謝します。PyCharmで静的型アサーションを使用することは可能ですか?

enter image description here

これはあなたのコード内の型チェックが非常に目立つようになります:あなたは型宣言を使用して、静的型チェックに多少近づくと「タイプチェッカー」検査の厳しさを増すことができpycharmを使用

+0

PyCharmが[PEP 484](https://www.python.org/dev/peps/pep-0484/)をサポートしているのかもしれませんか? –

答えて

8

Pythonは最近、静的型付けの周りに大きな進展がありました。 Python 3.5から、タイプヒントは事です。それはPEP 0484のすべてについてだった。型ヒント構文は、先にPEP 3107で導入された関数注釈構文に完全に基づいています。これにより、PEP 0484は新しい構文を伴わない変更となり、非常に魅力的で適応しやすくなりました。

それでは、どのように機能しますか?この構文は、実際には単純な場合にはかなり直感的です。たとえば、

def greeting(name: str) -> str: 
    return 'Hello ' + name 

非常に複雑なものもサポートしています。ユーザー型、呼び出し可能、共用体を使用する多重オーバーロード、さらには汎用型を使用することもできます。 PEP自体に多くの例があります。

また、最後のPyConでタイプヒントについてのGuido van Rossum’s talkを見ることもできます。これは本当に興味深く、詳細をたくさんカバーしています。

最後に、これらのタイプヒントをすべて使用して、それらとは何をしていますか?まあ、Python 3.5とPEP 0484のかなり前に存在していたこの素晴らしいライブラリがあります。実際に、正式に導入された型ヒント構文は、そのライブラリに基づいていますが、ちょうど形式化されています。ライブラリはmypyと呼ばれ、基本的にPythonの静的型チェッカーです。インストールされると、実行可能ファイルmypyを使用して、タイプ注釈を含むPythonスクリプトをタイプ・チェックすることができます。例えば

は、のは、ファイル内の関数定義の上に置くと、間違った型の引数でそれを呼び出してみましょう:

ファイルにmypyを実行
greeting(123) 

、次のような出力が得られます。

$ mypy test.py 
test.py:4: error: Argument 1 to "greeting" has incompatible type "int"; expected "str" 

mypyは技術的には実験的ですが、本当にうまく動作する非常に強力なツールです。あなたがこのことに慣れており、型の注釈を採用するなら、それを実際に調べるべきです。

+1

PyCharmと統合することは可能ですか? –

+1

@DagHøidahl[このページ](https://www.jetbrains.com/pycharm/help/type-hinting-in-pycharm.html)と私が見つけたいくつかの情報源によれば、機能注釈を使用するタイプヒントは実際にサポートされていますコード補完。それは、別々に実行する必要があるmypyによる検証です。 – poke

1

PyCharm 5 seems to support PEP 484。 PyCharm 5とPython 3.5のこの質問への答えの1つは、タイプヒントを使用することです。

関連する問題