2017-01-03 6 views
2

私は学校で作業しているプロジェクトの一部として、メインファイル(SM.py)と "mods"というフォルダを持っています私のプログラムにインポートされた他の.pyファイルを置くことができます(私は実際に何をしているか説明したくないですが、それは長い時間がかかりますが、関連性があれば説明することができます)。Python - インポートされたファイルから親ファイルにある関数を呼び出す

私がしたいことは、メインファイル(SM.py)からcall_trigger(trigger)という関数を呼び出すmodファイル内でタイマーを実行することです。問題は、メインファイルをmodファイルにインポートすることができないことです。これは循環依存関係を作成するためです。だから私が基本的にしようとしているのは:

a.pyはb.pyをインポートし、a.pyはfoo()関数を持っています。 最初にa.pyをインポートせずにb.pyからfoo()を呼び出す必要があります。

がうまくいけば、私はあなたが、さらに、について説明が必要な場合、私はそれを提供することができ、うまく自分自身を説明:)

答えて

0

あなたはこれを達成するためにコールバックを使用することができます。

# Some code from your top level 
def foo(): 
    print("Foobar") 

def bar(param): 
    print("param=%s" % param) 

# Code in the module 
def baz(callback): 
    print("Do something") 
    callback() 

baz(foo) # notice that there are no() after foo 
baz(lambda: bar(23)) # lambda creates an anonymous function, 
        # which is called by baz. The call within 
        # baz is the point when bar(23) will be executed. 

あなたは、パラメータとして任意の呼び出し可能オブジェクトを渡すことができますPython関数に渡し、後でこのパラメータを呼び出すことができます。

関連する問題