有没有办法明确告诉PyCharm属性是哪个类的实例?

时间:2012-01-27 21:34:59

标签: pycharm

我最近选择了PyCharm并且我已经习惯了Wing的一个功能,你可以告诉IDE哪个类是特定的标识符(变量,属性等等)。例如:

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

此时,Wing确切地知道my_object.my_attribute是什么,即使它也无法从源代码分析中找出它。

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

相关问题:我也看到了类似的问题,How can I tell PyCharm what type a parameter is expected to be?,但它并没有涵盖属性,只是参数。

3 个答案:

答案 0 :(得分:7)

实际上PyCharm也理解'assert isinstance'语法,但仅适用于不合格的引用。我已经提交了一个问题来支持合格的参考资料:

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

在当前版本中,您可以通过转到SomeClass的声明并为该属性添加epydoc或sphinx文档字符串来指定my_attribute的类型。

答案 1 :(得分:5)

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

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

以下是你的表现......

偏好设置> Python调试器> “收集代码洞察的运行时类型”

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

干杯

Picture of Debug Preferences

答案 2 :(得分: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"