2012-01-27 110 views
5

我最近拿起了PyCharm,我习惯了Wing的一个功能,在这里你可以告诉IDE什么类是一个特定的标识符(变量,属性,等等)。例如:有没有办法明确告诉PyCharm属性是什么类的一个实例?

my_object = SomeClass() 
assert isinstance(my_object.my_attribute, SomeOtherClass) 

在这一点上,永确切地知道my_object.my_attribute是什么即使它不能以其他方式从源代码分析看着办吧。

我正在寻找PyCharm中的类似功能。我知道一个对象的特定属性是什么,但是PyCharm没有,所以我怎么告诉它,所以它可以给我方便的完成?

相关问题:我也确实看到了类似的问题,How can I tell PyCharm what type a parameter is expected to be?,但它不包括属性,只是参数。

回答

7

实际上,PyCharm也理解'assert isinstance'语法,但仅限于非限定参考。我提起的一个问题来支持这个合格的引用,以及:

http://youtrack.jetbrains.net/issue/PY-5614

在当前版本中,您可以通过访问SomeClass的声明并添加epydoc的或狮身人面像文档字符串指定my_attribute类型为属性。

2

这是为我工作(2.6.2)

class Rule (object): 
    def __init__(self, *args): 
     self.criteria = [] 
     """@type : list of Criterion""" 
     crit = self.criteria[0] 
     #on this line, code completion works for "crit" 
5

如果我理解你的问题,你正在寻找正确的内容是从PyCharm一般类型推断。来自一个静态类型的语言,当我使用代码完成时,我感到很困惑,并且选择的数量与python库的内容差不多。

我发现在PyCharm中,它可以选择在运行时收集类型信息,并在开发时(即代码完成)使其可用。

这里是你怎么做...

首选项> Python调试>“收集的代码洞察运行时类型”

正如你“调试”你的代码(不是你不必使用断点)。 PyCharm将开始为所有代码导航/完成提供更好的建议。

干杯

Picture of Debug Preferences

相关问题