我有一个创建从它的参数派生类的函数:如何动态设置类名?
def factory(BaseClass) :
class NewClass(BaseClass) : pass
return NewClass
现在,当我用它来创建新的类,这些类都被命名为相同的,实例看起来像他们具有相同的类型:
NewA = factory(ClassA)
NewB = factory(ClassB)
print type(NewA()) # <class __main__.NewClass>
print type(NewB()) # <class __main__.NewClass>
正确修复手动设置__name__
属性?
NewA.__name__ = 'NewA'
print type(NewA()) # <class __main__.NewA>
我还有什么其他的事情需要设置吗?
如果NewClass中的类定义非常长,看起来有点笨重。我将不得不将所有的方法累加到一个字典中(我假设doc字符串也在那里,在'__doc __'''下)。 – kiyo 2011-03-18 14:24:55
还有,如果NewClass中的方法必须动态引用BaseClass的方法呢? – kiyo 2011-03-18 14:34:51
'type'用于创建具有可变基本列表的类;这完全是错误的工具。 – 2011-03-18 14:40:55