これについての助けが必要です。デコレータの関数を渡します
クラスにデコレータの実装を保持するwith_class.pyファイルがあります。この関数は別のファイルuse_class.pyから呼び出されています。
with_class.py
def __init__(self,f):
self.f = f
def __call__(self,x):
self.f(x)
@decorate
def foo(x):
print "inside foo" , x
use_class.pyは
import with_class
a = with_class.foo(x)
それは正常に動作します。 xの代わりに関数を渡したいのですが。 私はwith_class.pyとuse_class.pyで関数を定義していますが、 "a = with_class.foo(with_class.decorate.disp())"に渡したいと思います。 disp()はクラス内で定義された関数です。誰かがどこ見つけるために私を助けてください、私はエラー
"**TypeError: unbound method disp() must be called with decorate instance as first argument**".
を取得しています
with_class.py
class decorate:
def __init__(self,f):
self.f = f
def __call__(self,g):
self.f(g)
def disp(self):
print "inside the display"
@decorate
def foo(fn):
print "inside foo"
fn()
use_class.py
import with_class
a = with_class.foo(with_class.decorate.disp())
:今、上記のコードは次のようになります私は間違っている。
ありがとうございます。
を...私は上記のようなコードで試してみましたし、それがうまく働きました。しかし、別のファイル "use_class.py"を使ってみました:import with_class –
import with_class with_class.foo(decorate.disp)エラーで失敗しています...... NameError:name 'decorate'が定義されていません。 –
'decorate'をwith_classという名前の別のファイルで定義すると、それを' with_class.decorate'として参照するか、 'from_class import decorate'を実行する必要があります。これはPythonがどのように動作するのか、特にデコレータには関係しません。 –