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

+1 伊姆兰的解决方案。但是,我想到了一个更好的解决方案:

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

这样,虽然自动完成中仍然建议所有属性的超集,但不会浪费内存。

于 2011-05-27T17:41:25.903 回答