注意:这个问题是对从其他文件添加函数到 Python 类的修改/扩展。这部分是因为imp
已弃用。
上下文:我有一个大类文件(+5000 行),比如说MainClass.py
。为了更好地划分我的代码,我想将相关函数移动到单独的子文件中,例如所需的目录结构可能类似于:
- my_package
|
| - .__init__.py
| - MainClass.py
|
| - main_class_functions
| | - .__init__.py
| | - function_group_1.py
| | - function_group_2.py
| | ...
我希望能够加载这些函数并将它们添加到MainClass
目前我有:
# MainClass.py
import os
import importlib
class MainClass(object):
def __init__(self):
self._compartmentalized_functions_directory = 'main_class_functions'
self._location = os.path.dirname(os.path.abspath(__file__))
def load_functions(self):
# absolute path to directory of where the function files are located
function_files_directory = os.path.join(self.location, self._compartmentalized_functions_directory)
#
[importlib.import_module(file, os.path.join(function_files_directory, file)) for file in os.listdir(function_files_directory)]
# main_class_functions_1.py
def test(self):
print("test")
但这会吐一个ImportError
, 'main_class_functions_1' is not a package
。
(我还从链接的帖子中复制粘贴了代码,并试图查看它是否有效,但它没有)。