注: この質問は、 Adding functions from other files to a Python classの修正/拡張です。これは部分的に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
ます。
(リンクされた投稿からコードをコピーして貼り付け、それが機能するかどうかを確認しようとしましたが、機能しませんでした)。