有谁知道如何让下面的代码工作?
def mixin(TargetClass, *args, **kwargs):
"""*args is a bunch of classes to mixin to the TargetClass"""
if kwargs.get('name') is None:
kwargs['name'] = '%s_mixed_with_%s' % (TargetClass.__name__, "".join(map(str, args)))
class MixedClass(TargetClass, *args):
pass
MixedClass.__name__ = kwargs.get('name')
return MixedClass
# assume for all intents and purposes that Foo, Bar, Baz, Bot, Quux, and Muck are Classes
# Foo should inherit from all of Bar, Baz, Bot, Quux, and Muck
def uber_foo = mixin(Foo, Bar, Baz, Bot, Quux, Muck, name="UberFoo")`
Run Code Online (Sandbox Code Playgroud)
现在Python解释器(2.7.5)引发了以下错误:
TypeError:调用元类基类元类冲突时出错:派生类的元类必须是其所有基类的元类的(非严格)子类
怎么样:
return type(kwargs.get('name'),(TargetClass,)+args,{})
Run Code Online (Sandbox Code Playgroud)
代替:
class MixedClass(TargetClass, *args):
pass
MixedClass.__name__ = kwargs.get('name')
return MixedClass
Run Code Online (Sandbox Code Playgroud)
,当然,你的脚本的最后一行可能是养SyntaxError为def whatever = something无效.这应该是:
UberFoo = mixin(Foo,Bar,Baz,Bot,Quux,Muck,name='UberFoo')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
248 次 |
| 最近记录: |