如何检索子类作为元组的元组

时间:2014-07-04 21:34:29

标签: python polymorphism

来自BaseClass.__subclasses__()

[ClassA, ClassB]

我希望得到类似的内容:

((ClassA, ), (ClassB, ))

我试过这个,但它不起作用:

[tuple(x()) for x in BaseClass.__subclasses__()]

2 个答案:

答案 0 :(得分:0)

如果您想将列表转换为元组,其中每个列表项本身都是一元组,请尝试:

tuple(map(tuple, BaseClass.__subclasses__()))

答案 1 :(得分:0)

您可以使用以下内容:

tuple((x,) for x in BaseClass.__subclasses__())

参见下面的演示:

>>> class BaseClass:
...     pass
...
>>> class ClassA(BaseClass):
...     pass
...
>>> class ClassB(BaseClass):
...     pass
...
>>> BaseClass.__subclasses__()
[<class '__main__.ClassA'>, <class '__main__.ClassB'>]
>>>
>>> tuple((x,) for x in BaseClass.__subclasses__())
((<class '__main__.ClassA'>,), (<class '__main__.ClassB'>,))
>>>