생성자, 할당, 메소드 호출과 관련하여 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처럼 like 것"이라고 생각합니까?
편집 : 아래 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 의 라인입니다.
File> Settings> Python Integrated Tools로 이동하여 "Docstring format"을 "Epytext"로 설정하면 PyCharm의 View> Quick Documentation Lookup은 모든 @ 행을 그대로 인쇄하는 대신 매개 변수 정보를 예쁘게 인쇄합니다.
@param xx: yyy
된다:param xx: yyy
. jetbrains.com/pycharm/webhelp/…