[英]Group a collection of python files in a directory into a single import
我有一个 python 应用程序的大小和复杂性都在增长。 我现在有 2 个文件夹 - 一个包含一些实用程序类,另一个包含一些其他类。 它的每个列表都很长,并且到处都引用了这些类。
MyApp Folder
main_app.py
-- states
- Class1.py
- Class2.py
-- util
- Util1.py
- Util2.py
在 main_ap.py 中,有没有办法我可以只做“导入状态”,然后将该文件夹中的任何类引用为“states.Class1”? 我会为 util 文件夹做同样的事情,但不同之处在于这些类中的一些相互引用。
我已经尝试过init .py 和其他一些东西,但我是一个传统的 C++/C 开发人员,并且对 Python 来说相对较新,我认为处理方式大不相同。
如果states.__init__.py
执行from.Class1 import *
和from.Class2 import *
,那么 main.py 可以执行import states
然后states.SomeClassFromClass1Module
所以__init__.py
是一个文件,当您访问 package 内部的内容时,它会第一次执行。
也就是说, import states
是执行states/__init__.py
内容的一种方式
# states/__init__.py
from states.Class1 import MyClass
# Or with relative path
from .Class2 import MyClass as MyClass2
# main_app.py
import states
states.MyClass() # It works
from states import MyClass2
MyClass2() # It works too.
如果您决定使用星号导入(如 Eldamir 所述),您可能会对__all__
关键字感兴趣。
定义一个__init__.py
文件,然后在__init__.py
文件中导入您想要的类,例如from class1 import class11
然后最后定义__all__
方法并写入您想要用作 states.class11 的所有 class 名称作为states.class11
为__all__ = ['class11', 'class12',.. ]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.