2012-01-04 108 views
2

假设我的类methodA和methodB有两个方法。在methodA中,我创建了一个类X的对象S,然后我想将这个对象传递给methodB。那么,当我编写methodB时,我想知道X的类型,这样当我使用它时,输入我的IDE,就可以输入“X”。并看到S的方法和实例变量的列表。这在python中是不可能的吗?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. 

回答

3

这实际上并不是一个关于Python的问题。相反,这是一个关于IDE的问题。

我还没有看到一个IDE能够做你在问什么。另外,鉴于Python的动态特性,除了一些特殊情况外,实现这种代码完成将非常困难。

+0

+1是的,这是几乎不可能知道python对象成员没有运行代码 – soulcheck 2012-01-04 15:16:07

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, ... 

### 

也许绳支持一种注释,使上面的解决方法是不必要的,但我无法找到它的好例子。

相关问题