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

2024-05-13 01:26:38 发布

您现在位置: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

是否有其他方法可以在运行时自动执行此操作?你知道吗

我使用的是python2.7。你知道吗


Tags: selfhelloobjectinitdef错误stdinline
2条回答

可以使用3-argument form of ^{}创建类:

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

相关问题 更多 >