当涉及到构造函数,赋值和方法调用时,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
文档字符串的行。
如果您还转到“文件”>“设置”>“ Python集成工具”,并将“文档字符串格式”设置为“
Epytext”,则PyCharm的“视图”>“快速文档查找”将漂亮地打印参数信息,而不是仅按原样打印所有@ -lines。
是的,您可以对方法及其参数使用特殊的文档格式,以便PyCharm可以知道类型。最新的PyCharm版本支持大多数常见的doc格式。
例如,PyCharm从@param样式注释中提取类型。
另请参见reStructuredText和docstring约定(PEP
257)。
另一个选择是Python 3注释。
请参阅PyCharm文档部分以获取更多详细信息和示例。
我使用Selenium,需要无休止地等待页面加载(因为加载需要几个小时),然后解析其中的数据。我该怎么做? 我使用这样的一些代码:
我的笔记本是2010年买的,CPU2410M,RAM 8G。但是每次我启动PyCharm,都需要大约5分钟或更长时间。 如果我使用同一个笔记本,我如何改进PyCharm的启动?PyCharm有什么更好的启动策略吗?
有人能告诉我这个错误是什么意思,这样我就可以避免它了吗?在此处输入图像描述
问题内容: 函数定义中的下划线是什么意思? 例如 我了解在定义函数时,我可以执行以下操作: 然后,我将其称为而不是,即故意隐藏参数名称吗? 问题答案: Swift需要一个约定来说明函数名称是什么,不仅包括函数名称本身(在括号之前),还包括参数的外部名称。约定是名称后跟冒号。因此,这是一个函数声明(在Swift 2.0中): 这是该函数的名称: 但是,在现实生活中,一个或多个参数有可能(实际上)不会
本文向大家介绍JavaScript框架是什么?怎样才能叫做框架?,包括了JavaScript框架是什么?怎样才能叫做框架?的使用技巧和注意事项,需要的朋友参考一下 刚初学js时,总会听到关于框架的一些事情。等学完JQ后我才知道什么是框架。一下是转载的一篇文章,希望对还迷茫的童鞋们有点帮助。 什么是 JavaScript 框架? JavaScript 本身就是一种功能强大的语言,您不需要额外的框架就
有什么方法可以简化这段代码吗?我正好有一个白色的一块,想要得到它的位置 代码: 瓦片类: 件类:
我正在努力让Google Place API出现在CardView中。 我正在查看的特定代码来自GitHub,似乎适用于其他所有人,但我不明白为什么它会给我带来错误。 这是我遇到的错误: 主要的收获是,在对android类进行膨胀时出现了一个错误。碎片应用程序。FragmentContainerView,问题在XML的第50行。 这是XML: 所以我猜FragmentContainerView有问
python指标代码pymetrics可用于分析代码文件的复杂性。它们创建了两个不同的指标: 整个文件的COCOMO 2的SLOC度量 我想知道这些指标的数值意味着什么,而不是它们的定义。值“1”是什么意思?一个数字‘5’?一个“10”的数字?越高越好还是越低越好?什么数值指的是好代码,什么指的是真正的坏代码?上网搜了一下,给了一些提示,但我不确定分类指的是公制(1)还是公制(2)。我想让这两个数