コンストラクター、割り当て、メソッド呼び出しに関しては、PyCharm IDE はソース コードを解析し、各変数の型を判断するのに非常に優れています。適切なコード補完とパラメーター情報が提供され、存在しない属性にアクセスしようとすると警告が表示されるので、これが正しいと気に入っています。
しかし、パラメータに関しては何も知りません。コード補完ドロップダウンは、パラメータの型がわからないため、何も表示できません。コード分析では警告を探すことができません。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
peasant = Person("Dennis", 37)
# PyCharm knows that the "peasant" variable is of type Person
peasant.dig_filth() # shows warning -- Person doesn't have a dig_filth method
class King:
def repress(self, peasant):
# PyCharm has no idea what type the "peasant" parameter should be
peasant.knock_over() # no warning even though knock_over doesn't exist
King().repress(peasant)
# Even if I call the method once with a Person instance, PyCharm doesn't
# consider that to mean that the "peasant" parameter should always be a Person
これはある程度理にかなっています。他の呼び出しサイトでは、そのパラメータに何でも渡すことができます。しかし、私のメソッドが、たとえば の型のパラメータを期待している場合、何らかの方法でpygame.Surface
PyCharm にそれを示し、Surface
コード補完ドロップダウンに のすべての属性を表示したり、間違ったメソッドを呼び出した場合に警告を強調表示したりできるようにしたいと思います。
PyCharm にヒントを与えて、「このパラメータは 」型であるはずです、と伝える方法はありますかX
? (あるいは、動的言語の精神にのっとって、「このパラメータはX
」のように鳴くはずです、と伝える方法はありますか? 私としてはそれで構いません。)
編集:CrazyCoder の回答は、以下の通りです。私のように簡単な要約を知りたい初心者のために、ここに示します。
class King:
def repress(self, peasant):
"""
Exploit the workers by hanging on to outdated imperialist dogma which
perpetuates the economic and social differences in our society.
@type peasant: Person
@param peasant: Person to repress.
"""
peasant.knock_over() # Shows a warning. And there was much rejoicing.
関連する部分は、@type peasant: Person
docstring の行です。
また、「ファイル > 設定 > Python 統合ツール」に移動して、「Docstring 形式」を「Epytext」に設定すると、PyCharm の「表示 > クイック ドキュメント検索」では、すべての @ 行をそのまま印刷するのではなく、パラメーター情報をきれいに印刷します。
ベストアンサー1
はい、メソッドとそのパラメータに特別なドキュメント形式を使用して、PyCharmが型を認識できるようにすることができます。最近のPyCharmバージョン最も一般的なドキュメント形式をサポート。
例えば、PyCharmは以下から型を抽出します。@param スタイルのコメント。
参照再構造化テキストそしてドキュメント文字列の規則(PEP 257)。
もう 1 つのオプションは、Python 3 アノテーションです。
お願いしますPyCharmのドキュメントセクションを参照してください詳細とサンプルについてはこちらをご覧ください。