繁体   English   中英

将目录中的 python 文件集合分组到单个导入中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM