コンストラクター、代入、およびメソッド呼び出しに関しては、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 の [ビュー] > [クイック ドキュメント ルックアップ] は、すべての @ 行をそのまま印刷するのではなく、パラメーター情報をきれいに印刷します。