有谁知道 pydev 如何确定用于代码完成的内容?我正在尝试定义一组专门用于启用代码完成的类。我尝试使用__new__
to set__dict__
和 also __slots__
,但似乎都没有在 pydev 自动完成中列出。
我有一组要在自动完成中列出的枚举,但我想将它们设置在生成器中,而不是为每个类都硬编码。
所以而不是
class TypeA(object):
ValOk = 1
ValSomethingSpecificToThisClassWentWrong = 4
def __call__(self):
return 42
我想做类似的事情
def TYPE_GEN(name, val, enums={}):
def call(self):
return val
dct = {}
dct["__call__"] = call
dct['__slots__'] = enums.keys()
for k, v in enums.items():
dct[k] = v
return type(name, (), dct)
TypeA = TYPE_GEN("TypeA",42,{"ValOk":1,"ValSomethingSpecificToThisClassWentWrong":4})
我能做些什么来帮助处理?
编辑: 评论似乎是在质疑我在做什么。同样,我所追求的很大一部分是代码完成。我正在使用 python 绑定到协议来与各种微控制器通信。我可以更改的每个参数(有数百个)在概念上都有一个名称,但在协议上我需要使用它的 ID,这实际上是随机的。许多参数接受在概念上命名但又由整数表示的值。因此枚举。
我正在尝试为该库自动生成一个 python 模块,因此该组可以使用名称而不是容易出错的数字来指定他们想要更改的内容。该__call__
属性将返回参数的 id,枚举是参数的允许值。
是的,我可以生成每个类的详细版本。每种类型的一行对我来说似乎更清楚,因为重点是自动完成,而不是查看这些类。