0

注: この質問は、 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ます。

(リンクされた投稿からコードをコピーして貼り付け、それが機能するかどうかを確認しようとしましたが、機能しませんでした)。

4

0 に答える 0