【发布时间】:2014-12-21 16:13:40
【问题描述】:
我写了以下元类:
class FieldHandlerBase(type):
def __new__(cls, name, bases, dct, model):
...
return super(FieldHandlerBase, cls).__new__(cls, name, bases, dct)
现在,我尝试使用上述元类动态创建一个类:
FieldHandlerBase(
'%sFieldHandler' % name,
(FieldHandler,),
{rel_type: dct.setdefault(rel_type, ()) for rel_type in REL_TYPES},
model=name)
但它抛出了这个错误:
> model=name)
E TypeError: Error when calling the metaclass bases
E type.__init__() takes no keyword arguments
我不明白为什么,因为我使用正确数量的参数调用元类基础(此处为type,来自FieldHandlerBase)。我怎样才能解决这个问题?我需要将一个额外的参数传递给FieldHandlerBase,并且我不想将它包含在dct 参数中,因为我只在元类级别需要它。
【问题讨论】:
标签: python metaprogramming metaclass