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

Har*_*Har 15 python oop superclass python-2.7

我有以下课程:

class hello(object):
    def __init__(self):
        pass

class bye(object):
    def __init__(self):
        pass

l = [hello, bye]
Run Code Online (Sandbox Code Playgroud)

如果我执行以下操作,则会收到错误消息:

>>> class bigclass(*l):
  File "<stdin>", line 1
    class bigclass(*l):
                    ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

还有另一种方法可以在运行时自动执行此操作吗?

我使用的是Python 2.7.

unu*_*tbu 13

您可以使用3参数形式type来创建类:

bigclass = type('bigclass', (hello, bye), {})
Run Code Online (Sandbox Code Playgroud)


Ash*_*ary 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'>)
Run Code Online (Sandbox Code Playgroud)