pydev がコード補完に何を使用するかを決定する方法を知っている人はいますか? コード補完を有効にするために、一連のクラスを定義しようとしています。私は__new__
set__dict__
とを使用しようとしまし__slots__
たが、どちらも pydev autocomplete にリストされていないようです。
オートコンプリートにリストしたい列挙型のセットがありますが、クラスごとにすべてをハードコードするのではなく、ジェネレーターに設定したいと思います。
だからというより
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 を返します。列挙型はパラメーターの許容値です。
はい、各クラスの冗長バージョンを生成できます。ポイントはオートコンプリートであり、これらのクラスを表示しないため、タイプごとに1行がより明確に見えました。