我正在使用Python库mylibrary
,它将提供三个便捷类,分别为Foo
,Bar
和Baz
。我希望用户将它们导入为mylibrary.Foo
,mylibarary.Bar
和mylibrary.submodule.Baz
,因为第三个确实属于子模块名称空间。但是,为了避免循环导入错误,需要在一个通用模块(_classes
)中定义所有这三个模块。因此,目录结构类似于:
mylibrary
├── __init__.py
│
├── _classes.py
│
└── submodule.py
在mylibrary.__init__
中,我可以使用from _classes import Foo, Bar
使它们在顶级名称空间中可用。但是,我无法在submodule.py
中执行类似操作(例如from _classes import Baz
,因为它会触发循环导入错误。
如何让三个交织在一起的类出现在名称空间的两个不同部分?