我在让我的 python 类在 python 控制台中工作时遇到了一些麻烦。我想自动将我的所有类导入全局命名空间,这样我就可以在没有任何前缀.module.names 的情况下使用它们。
这是我到目前为止所得到的......
projectname/
|-__init__.py
|
|-main_stuff/
|-__init__.py
|-main1.py
|-main2.py
|
|-other_stuff/
|-__init__.py
|-other1.py
|-other2.py
每个文件定义一个同名的类,例如 main1.py 将定义一个名为 Main1 的类。
MyPYTHONPATH
是 projectname/ 的绝对路径。
我有一个包含以下内容的 python 启动文件:
from projectname import *
但这根本不允许我使用我的课程。在启动 python 控制台后,我希望能够编写:
ob=Main1()
但 Main1 不在当前命名空间内,所以它不起作用。
我尝试将内容添加到__init__.py
文件中...
在projectname/__init__.py
:
import main_stuff
在projectname/main_stuff/__init__.py
:
import other_stuff
__all__ = ["main1", "main2", "main3"]
等等。在我的启动文件中,我添加了:
from projectname.main_stuff import *
from projectname.main_stuff/other_stuff import *
但是要在 python 控制台中使用这些类,我仍然必须编写:
ob=main1.Main1()
我宁愿不需要这main1.
部分。有谁知道在使用 python 控制台时如何自动将我的类放在全局命名空间中?
谢谢。
==== 编辑 ====
我需要的是在类级别导入一个包,但from package import *
在模块级别为我提供一切。我正在寻找一种简单的方法来做这样的事情:
for module in package do:
from package.module import *
==== 另一个编辑 ====
我最终将类导入单独添加到我的 python 启动文件中。由于维护它的开销,它并不理想,但它可以满足我的需求。
from class1.py import Class1
from class2.py import Class2
from class3.py import Class3