我可以将文件的类别保存到列表中吗?

时间:2019-12-03 17:18:59

标签: python

假设我有两个文件。 第一个是a.py,其中定义了许多类:

class A:
    pass

class B:
    pass

class C:
    pass

...

在第二个文件b.py中,我希望访问列表中的a.py类。我该怎么办?

# class_list is the classes of a.py
for class_def in class_list:
    do_something(class_def)

1 个答案:

答案 0 :(得分:1)

一种方法是遍历模块属性并采用那些属于类的属性,如注释中所述。但这很容易泄漏由a.py导入的类和您不打算导出到b.py的类。

例如,我会在a.py中将其明确显示:

exported = [A, B, C]

b.py中的

for cls in a.exported:
    do_something(cls)

或者,您可以在a.py中使用装饰器以更精美的方式使其:

exported = []

def export(cls):
     exported.append(cls)
     return cls

@export
class A:
    pass

...

b.py相同。