2012-01-04 7 views
2

私のクラスにmethodAとmethodBという2つのメソッドがあるとします。メソッドAでは、クラスXのオブジェクトSを作成し、このオブジェクトをメソッドBに渡したいとします。それでメソッドBを書いているときに、私は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

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

### 

を多分ロープは、上記の回避策を不要にする注釈の種類をサポートしていますが、私はそれの良い例を見つけることができません。

関連する問題