使用动态命名的引用动态创建多个子类

时间:2015-07-23 16:38:35

标签: python dynamic subclass metaclass

我有一个带有Object baseObj的模块(myMod.py)和一些方法

class baseObj(object):
    ....
    def doThing(self):
        ......

我需要创建许多子类,正常的方法是:

class Foo(baseObl):
    pass

class Bar(baseObl):
    pass

但是有很多这些。

我在列表中有这些子类的名称

subNames  = ['Foo','Bar','Lorem',...]

我可以动态创建子类(与上面相同)

Foo = type('Foo', (baseObj), {})

我想做的是:

for name in subNames:
    name = type(name, (baseObj), {}) 

使用列表中的名称创建一堆子类。

显然,这种剂量不起作用。

我在网上找到的是做这样的事情:

registry =[]
for name in subNames:
    registry[name] = type(name, (baseObj), {}) 

如果我正在寻找的API,那将不会给我。

最后我想要允许的是:

from myMod import Foo, Bar

a = Foo()
a.doThing()

b = Bar()
b.doThing()

etc.

有一种漂亮的方法吗?

0 个答案:

没有答案