17

モジュール foo があり、このモジュール内に動的にクラスを作成しました:

def superClassCreator():
    return type("Bar", (object,), {})

今、私が達成したいのは、この新しい動的クラスをこのモジュールのクラスとして見えるようにすることです:

import foo
dir(foo)
>>> [... 'Bar' ...]

これを行う方法を知っていますか?

4

1 に答える 1

22

Bar = superClassCreator()in foo(モジュール レベル) で使用できます。

または、別のモジュールから、次Barの属性として追加できfooます。

import foo

foo.Bar = superClassCreator()

または、生成されたクラスから名前を取得する必要がある場合:

import foo

generatedClass = superClassCreator()
setattr(foo, generatedClass.__name__, generatedClass)

モジュール内から、次のfooように直接設定できますglobals()

generatedClass = superClassCreator()
globals()[generatedClass.__name__] = generatedClass
del generatedClass

名前空間から名前を再度del削除するオプションのステートメントを使用します。generatedClass

于 2012-11-29T11:21:29.437 に答える