gpt4 book ai didi

python - 我怎样才能告诉 PyCharm 参数应该是什么类型?

转载 作者:太空宇宙 更新时间:2023-11-03 12:09:28 25 4
gpt4 key购买 nike

当谈到构造函数、赋值和方法调用时,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 pearmal: Person 行。

如果您还转到"file">“设置”>“Python 集成工具”并将“Docstring 格式”设置为“Epytext”,那么 PyCharm 的“ View ”>“快速文档查找”将漂亮地打印参数信息,而不是仅打印所有@-lines -是。

最佳答案

是的,您可以对方法及其参数使用特殊的文档格式,以便 PyCharm 可以知道类型。最近的 PyCharm 版本 supports most common doc formats .

例如,PyCharm 从 @param style comments 中提取类型.

另见 reStructuredTextdocstring conventions (PEP 257)。

另一种选择是 Python 3 注释。

refer to the PyCharm documentation section获取更多详细信息和示例。

关于python - 我怎样才能告诉 PyCharm 参数应该是什么类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11523597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com