1

こんにちは。

解決できないような奇妙な問題があります。

Windows XPでEclipse Heliosを使用してpydevプラグインを使用しています(問題がある場合)。

クラスを含むモジュールがあります。この__init__クラスの は、このクラスのメソッドが持つべき属性のセットを決定するパラメータを取ります。

実際のコードを示すことは許可されていないため、次の類推を行うことができます。

class Car:
    def __init__(self, attrs):
        # attrs is a dictionary.
        # the keys of attrs are the names of attributes that this car should have
        # for example, a key of attr could be 'tires'

        # the values of attrs are the values of the attributes which are the keys
        # so if the key is 'tires', it's value might be 4

現在、実行時にこれらの変数を動的に設定しているため、これを行ったときに Pydev から提案を得ることができません。

c = Car()
print c.tires

「c」と入力すると。+、pydev は提案としてタイヤを提供しません。

この機能を取得するにはどうすればよいですか? それとも、現在pydevができることではないのでしょうか?

助けていただければ幸いです

4

2 に答える 2

1

これは、すべての動的言語IDEが抱える一般的な問題です。Car.__init__Pydevには、コードを実行せずに、Carのインスタンスにどの属性が設定されているかを知る方法がありません。で設定した属性にクラス変数を使用する場合__init__、Pydevはオートコンプリートの提案を提供できるはずです。

class Car(object):
    tires = 4

    def __init__(self, attrs):
         self.tires = attrs.get('tires', self.tires)
         self.tires += attrs.get('spare', 0)
于 2011-05-18T17:49:43.077 に答える
0

彼の解決策についてImranに+1。しかし、私はより良い解決策を思いつきました:

Create all attributes in `__init__`.
When it comes time to be dynamic, delete the unwanted attributes.

この方法では、オートコンプリートですべての属性のスーパーセットが提案されますが、メモリは無駄になりません。

于 2011-05-27T17:41:25.903 に答える