我有以下课程:
class hello(object):
def __init__(self):
pass
class bye(object):
def __init__(self):
pass
l = [hello, bye]
如果我执行以下操作,则会收到错误消息:
>>> class bigclass(*l):
File "<stdin>", line 1
class bigclass(*l):
^
SyntaxError: invalid syntax
还有另一种方法可以在运行时自动执行此操作吗?
我正在使用Python 2.7。
答案 0 :(得分:13)
您可以使用3-argument form of type
创建课程:
bigclass = type('bigclass', (hello, bye), {})
答案 1 :(得分:6)
使用元类:
class Meta(type):
def __new__(cls, clsname, bases, dct):
bases = tuple(dct.pop('bases'))
return type.__new__(cls, clsname, bases, dct)
class bigclass:
__metaclass__ = Meta
bases = l
print bigclass.__bases__
#(<class '__main__.hello'>, <class '__main__.bye'>)