我有一个关于Python文件管理的问题。我组织Python文件的方式如下(__init__.py
为空):
--src
|---__init__.py
|---module1
| |----- __init__.py
| |----- my_file1.py
|---module2
| |----- __init__.py
| |----- my_file2.py
--app
|---my_application.py
如您所见,我将代码分为两组:第一组代码位于src
目录中,包含自定义库代码;第二组代码位于app
目录中,包含将调用自定义库的应用程序代码。my_application.py
可能包含以下代码:
from src.module1.my_file1 import ClassA1, ClassA2, ClassA3
from src.module2.my_file2 import ClassB1, ClassB2, ClassB3
a = ClassA1()
b = ClassB3()
每当我编写一个基于自定义库的应用程序时,从自定义库导入类是很无聊的。我想要这样的东西:
请求1:
import all classes defined in src.module1
请求2:
import fundamental classes defined in src.module1 and src.module2
这里基本类可以指src.module1.my_file1
中的ClassA1
和src.module2.my_file2
中的ClassB2
要回答第一个问题,只需将
from src.module1.my_file1 import ClassA1, ClassA2, ClassA3
替换为import src.module.my_file1
这将允许您访问模块中的所有类。如果需要,还可以将导入的模块命名为
import module as md
,这样可以访问模块中的所有类,如a = md.ClassA1()
至于你的第二个问题,我认为永远不需要只从一个模块导入几个类。除非被调用,否则这些类不会被实例化,因此不会为它们分配内存。你知道吗
答案是基于@Xatyrian在Python中使用
__all__
关键字的评论(关于Stackoverflow的讨论可以在这里找到,@aron Hall的评论非常好)请在讨论中勾选@Marshal Hayes answer。基本上,我们将使用
import module_name
导入模块这可以使用关键字
__all__
来完成。你知道吗在(1)
__init__.py
中,我们可以表示我们想要导出哪个模块(如果我们想要从这个模块导出函数,我们就导出这个模块)。在(2)和(3)中,我们表示要导出哪个文件(如果要从这个文件导出函数,我们就导出这个文件)。然后在每个函数实现文件中,例如myu file1.py,我们可以在__all__=[fun1,fun2,fun3]
关键字中列出所有要导出的函数。你知道吗然后,当我们想在应用程序文件中使用导出的函数时,我们只需导入顶层模块名。在我们的示例中,我们将执行以下操作:
相关问题 更多 >
编程相关推荐