Нужна помощь по этому вопросу.Передача функции для декоратора
Имейте файл 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() - это функция, определенная внутри класса. Приведенный выше код теперь выглядит следующим образом:
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())
Я получаю ошибку
"**TypeError: unbound method disp() must be called with decorate instance as first argument**".
Может кто-то пожалуйста, помогите мне найти, где Я ошибаюсь.
Заранее спасибо.
... Я попытался с кодом, как описано выше, и она работала отлично. Но я попытался использовать другой файл «use_class.py», в котором: import with_class –
import with_class с_class.foo (decorate.disp), он с ошибкой ... ИмяError: name 'decorate' не определен. –
Если вы определяете 'decorate' в другом файле с именем_class, тогда вам нужно ссылаться на него как' with_class.decorate', либо делать 'from_class import decorate'. Так работает Python и не имеет особого отношения к декораторам. –