PyCharm でclassの変数にコード補完をさせたい。百聞は一見にしかず。
コード補完が効かない書き方
no_type_hint.py
import redis
class MyRedis(object):
def __init__(self):
self.client = None
def connect(self):
self.client = redis.StrictRedis()
# 以下を入力してもコード補完されない
MyRedis().client.

コード補完を効かせる書き方
type_hint.py
import redis
class MyRedis(object):
def __init__(self, client=None):
# type: (redis.StrictRedis) -> None # ←ポイント
self.client = client
def connect(self):
self.client = redis.StrictRedis()
# 以下client後のピリオドを入力すると、 `redis.StrictClient` のコード補完が行われる
MyRedis().client.

動作確認
- PyCharm 2018.2 CE
いいわけ
Type Hints
や PEP 484
について、著者は正しく理解しているわけではないです。実績ベースの できた!
を本記事にて共有させてください。