私はPythonで次のことをしようとしています:
foo.pyというファイルの場合:
# simple function that does something:
def myFunction(a,b,c):
print "call to myFunction:",a,b,c
# class used to store some data:
class data:
fn = None
# assign function to the class for storage.
data.fn = myFunction
そして、bar.pyというファイルで:import foo
d = foo.data
d.fn(1,2,3)
ただし、次のエラーが発生します。
TypeError:バインドされていないメソッドf()は、最初の引数としてデータインスタンスを使用して呼び出す必要があります(代わりにintインスタンスを取得します)
これは私が思うに十分に公平です-pythonはd.myFunctionをクラスメソッドとして扱っています。ただし、通常の関数として処理する必要があるため、未使用の「self」パラメーターをmyFunction定義に追加せずに呼び出すことができます。
したがって、問題は次のとおりです。
関数がそのクラスにバインドされることなく、関数をクラスオブジェクトに格納するにはどうすればよいですか?