我有一个Python包,我想在其中公开一些类。我还需要在某些时候迭代这些类,因此我也想将__all__
公开为类列表,而不是字符串。在尝试了无数种方法之后,我在__init__.py
中确定了以下内容:
from .a import A
from .b import B
from .c import C
ALL = [A, B, C]
__all__ = [x.__name__ for x in ALL]
这行得通,因为我可以使用from package import *
来获取所有类,还可以使用import package / package.ALL
来遍历它们。
是否有一种更清洁(或更正确)的方法?我的主要抱怨是,如果要添加新类,则必须先导入将其添加到列表中的类。如果我可以将一个新类添加到一个地方,那将是理想的选择。