Как объединить многие объекты в один объект с помощью наследования в python? (во время выполнения)

У меня есть следующие классы:

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.

Ответы

Ответ 1

Вы можете использовать 3-аргумент формы type для создания класса:

bigclass = type('bigclass', (hello, bye), {})

Ответ 2

Использование метакласса:

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'>)