Ответ 1
Вы можете использовать 3-аргумент формы type
для создания класса:
bigclass = type('bigclass', (hello, bye), {})
У меня есть следующие классы:
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.
Вы можете использовать 3-аргумент формы type
для создания класса:
bigclass = type('bigclass', (hello, bye), {})
Использование метакласса:
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'>)