Reputation: 3918
I have the following classes:
class hello(object):
def __init__(self):
pass
class bye(object):
def __init__(self):
pass
l = [hello, bye]
If I do the following I get an error:
>>> class bigclass(*l):
File "<stdin>", line 1
class bigclass(*l):
^
SyntaxError: invalid syntax
Is there another way to do this automatically at runtime?
I am using Python 2.7.
Upvotes: 15
Views: 157
Reputation: 250941
Using a Metaclass:
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'>)
Upvotes: 6
Reputation: 879471
You could use the 3-argument form of type
to create the class:
bigclass = type('bigclass', (hello, bye), {})
Upvotes: 13