假设我有两个文件。
第一个是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)
答案 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
相同。