如何遍历每个类声明,来自特定的基类?

Ale*_*Vhr 4 python sqlalchemy python-elixir

我在徘徊elixir\sqlalchemy如何在我打电话的时候知道我在模型中声明的所有实体类setup_all()?我在我的一个小项目中需要这种功能,但我不知道.我试图通过elixir's steptrace setup_all(),我发现它将所有实体类的集合保存在"全局"列表中(或者它是dict?),但我无法捕捉到列表填充的那一刻.有任何想法吗?

eli*_*eac 9

对于类定义,这更容易(无需导入)

def find_subclasses(cls):
    results = []
    for sc in cls.__subclasses__():
        results.append(sc)
    return results
Run Code Online (Sandbox Code Playgroud)

我不确定你是想要这个还是对象.如果你想要对象:

import gc

def find_subclasses(cls):
    results = []
    for sc in cls.__subclasses__():
        for obj in gc.get_objects():
            if isinstance(obj, sc):
               results.append(obj)
    return results
Run Code Online (Sandbox Code Playgroud)

  • @AlexVhr你真的不应该再使用旧式的课了. (3认同)