コンストラクター、割り当て、およびメソッド呼び出しに関しては、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にヒントを与え、「psst、このパラメーターは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の[表示]> [クイックドキュメントルックアップ]は、@行をすべてそのまま印刷するのではなく、パラメーター情報をきれいに印刷します。
@param xx: yyy
なり:param xx: yyy
。jetbrains.com/pycharm/webhelp/…を