如何在python中使用继承将多个对象连接成一个对象? (在运行时)

时间:2013-12-06 14:03:01

标签: python oop python-2.7 superclass

我有以下课程:

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。

2 个答案:

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