2016-12-06 8 views
0

私は私のオブジェクトのfile.py "座っている場所へのパスを供給し、私はそれが「圧縮」別のクラスのユーザーによって実装されたメソッドを呼び出す方法は?

file.pyと呼ばれるからメソッドを呼び出す必要が

def compress(arg): 
    return arg-5 

other.py

class Algorithm: 
    def __init__(self, path): 
     self.path = path #/PATH/TO/file.py 

    def func(self, arg1): 
     return self.path.compress(arg1) 

もちろん、これはダミーの例ですが、正しい方法でfuncを実装するにはどうすればよいですか?それも可能ですか?

答えて

3

importlibモジュールを使用すると、動的に適切なパスをロードしてから、このモジュールから適切な関数を呼び出すことができます。 os.pathを使用した簡単な例:この場合

import importlib 
my_module = importlib.import_module('os.path') 
my_module.exists("/non_existing_path") 

、あなたは、このようなファイルの存在と機能の有無など、いくつかの追加チェックをしたいかもしれません。

関連する問題