35
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

PyCharmで型補完を効かせる

型の手がかりがないと、PyCharmは候補を出してくれません。

cameo_trackers_py_-_opencv-python_p150121_-____tmp_opencv-python_p150121_3.jpg

リスト型とわかると、リストに関するメソッドなどを候補として出してくれます。

cameo_trackers_py_-_opencv-python_p150121_-____tmp_opencv-python_p150121_1.jpg

しかし、これでもリストに入っている要素の型まではわからないため、以下の場合、PyCharmは候補を出してくれません。

cameo_trackers_py_-_opencv-python_p150121_-____tmp_opencv-python_p150121_2.jpg

しかし""":type: <type>"""を使って、型を明示する文を入れてあげると、この場合はFaceクラスのフィールドが候補として出されます。

cameo_trackers_py_-_opencv-python_p150121_-____tmp_opencv-python_p150121_4.jpg

ちなみに関数を普通に書くとPyCharmは型を適宜推論してくれますが・・・

3rd-typing_…_filters_py_-_opencv-python_p150121_-____tmp_opencv-python_p150121_5.jpg

:rtype :<type>を使って、関数の戻り値を型指定することもできます。

3rd-typing_…_filters_py_-_opencv-python_p150121_-____tmp_opencv-python_p150121_3.jpg

返り値だけでなく引数の型を指定することもできます。

指定しないと何も候補を出してくれませんが・・・

cameo_cameo_py_-_opencv-python_p150121_-____tmp_opencv-python_p150121_7.jpg

・・・:type x: <type>で指定すると候補を出してくれます。ちなみに関数を書いて改行したあとに"""と打って改行するとdocstrings形式の注釈を入れるひな形をPyCharmが自動で入力してくれます。

cameo_cameo_py_-_opencv-python_p150121_-____tmp_opencv-python_p150121_6.jpg

表記 内容
Foo Fooクラス
x.y.Bar x.yモジュールのBarクラス
Foo | Bar Foo もしくは Bar
(Foo, Bar) FooとBarのタプル
list[Foo] Fooを要素とするリスト
dict[Foo, Bar] FooからBarへの辞書
T ジェネリック型 (T-Zはジェネリック型の予約語)
T <= Foo Fooを継承したクラス
list[T <= Foo] リストの要素として、Fooを継承したタイプしか受け付けない
Foo[T] Tを引数にとるFoo
(Foo, Bar) -> Baz Bazを返す、FooとBarの関数
list[dict[str, datetime]] 文字列からdatetimeへの辞書、のリスト(要素の入れ子)

ブログやってます:Weed software

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
35
Help us understand the problem. What are the problem?