【发布时间】:2013-03-12 05:59:30
【问题描述】:
我想做一个函数,从可变数量的所谓 mixin 类中创建一个新类。我的第一反应是使用*args ...
>>> def mixins(*args):
class Foo(*args):
SyntaxError: invalid syntax
...但没有走多远...因为这不起作用,我尝试了这个,这似乎有效:
>>> def mixins(*args):
class Foo(args[0]):
pass
for arg in args[1:]:
class Foo(Foo, arg):
pass
return Foo
问题
还有其他方法可以解决这个问题吗?
动机
我创建了一个包含许多抽象方法的抽象基类。我有几种类型的子类,每个子类都实现了一些需要的抽象方法,但不是全部。有时我可以通过混合 2 个子类来创建一个工作实例,有时需要更多的时间来实现所有抽象方法。
【问题讨论】:
-
我的直觉告诉我必须有更好的方法。你能解释一下这样做的动机吗?也许使用类装饰器会更合适。您的问题需要基于继承的解决方案吗?
-
@shx2 我添加了有关问题动机的文字。