1. ホーム
  2. python

[解決済み] PyCharmにパラメータの型を知らせるにはどうしたらいいですか?

2022-04-22 12:39:52

質問

コンストラクタ、代入、メソッド呼び出しに関して、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, this parameter is supposed to be of type X ということでしょうか?(あるいは、動的言語の精神に則り、"このパラメータは、"quot "のように鳴ることになっています。 X ということでしょうか。私はそれでいいと思うのですが)


EDITです。 以下の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 format" を "Epytext" にすると、 PyCharm の View > Quick Documentation Lookup が、パラメータ情報をそのまま出力するのではなく、きれいに出力してくれます。

どのように解決するのですか?

はい、メソッドとそのパラメータに特別なドキュメント形式を使用することで、PyCharmがその型を知ることができます。最近のPyCharmのバージョン 最も一般的なドキュメント形式をサポート .

例えば、PyCharmは 引数のスタイルコメント .

参照 reStructuredText docstringの規約 (PEP 257) を参照してください。

また、Python 3 のアノテーションという選択肢もあります。

お願い PyCharmのドキュメントのセクションを参照してください。 は、詳細とサンプルをご覧ください。