python: 实例化模块中的所有子类及其函数输出

python: instaintiate all subclasses in a module along with their function output

我有一个 python 脚本,其中包含以下 classes 和子 classes,

from abc import ABC, abstractmethod

class A(ABC):

    @abstractmethod
    def process(self):
        pass

class B(A):
    result= []
    def process(self):
        ...code...
        return result

class C(A):
    result= []
    def process(self):
        ...code...
        return result

class D(A):
    result= []
    def process(self):
        ...code...
        return result

因此,抽象 class A 的每个子 class 都会进行一些处理并将输出附加到 'result' 列表,然后 'process' 函数 returns 结果。我想知道是否有一种方法可以实例化所有子 classes 和这些 classes 中的函数,以便能够访问 return 所有函数的结果subclasses 在 list of lists.

我看过这个 post 中的一些答案,但是使用那里的答案我只能证实子 classes 而不知道如何证实'process' 函数。

困难的部分是找到所有的子类,因为它使用了鲜为人知的 __subclasses__ 特殊方法。由此很简单:为每个子类实例化一个对象并在其上调用 process 方法:

final_result = []                      # prepare an empty list
for cls in A.__subclasses__():         # loop over the subclasses
    x = cls()                          # instanciate an object
    final_result.append(x.process())   # and append the result of the process method

但是 Pythonic 的方法是使用单行理解

final_result = [cls().process() for cls in A.__subclasses__()]