Python:具有用户定义对象代码完成的编辑器

时间:2012-01-04 15:10:49

标签: editor code-completion

假设我的类中有两个方法,methodA和methodB。在methodA中,我创建了一个X类的对象,然后我想将此对象传递给methodB。然而,当我编写methodB时,我希望知道X的类型,这样当我使用它时,键入我的IDE,我只需键入“X”。并查看S的方法和实例变量列表。这在python中是不可能的吗?

def methodA(self):

   S = X()
   self.methodB(S)

def methodB(self, S):

   "S."....#here I want to see all the methods of variable S.

2 个答案:

答案 0 :(得分:3)

这不是关于Python的问题。相反,这是关于IDE的问题。

我还没有看到能够做你所要求的IDE。另外,考虑到Python的动态特性,除了一些特殊情况外,实现这样的代码完成将非常困难。

答案 1 :(得分:0)

如果您的IDE支持rope插件,则可以获得部分自动完成支持。

我正在使用的编辑器(SublimeText)支持一个绳索插件,然后我可以输入:

class Class(object):
    def __init__(self):
        self.var1 = "one"
        self.var2 = "two"
        self.var3 = "three"

    def method_1(self):
        pass

    def method_2(self):
        self.var1 = "one**"     # Autocomplete works here, no need of workarounds


def test_method(obj1_, obj2_):
    # To make autocompletion works here, I start suffixing the parameters with _

    if False:                # Then I define each parameter statically
        obj1 = Class()
        obj2 = Class()

    # Autocomplete now works!
    obj1.method_1()
    print obj2.var1

    # Remember to rename obj1_ to obj1, ...

###

也许rope支持一种注释来使上述解决方法变得不必要,但我找不到好的例子。