Найти - Пользователи
Полная версия: Забрать объект декорированной ф-и, по ее имени в строке
Начало » Python для экспертов » Забрать объект декорированной ф-и, по ее имени в строке
1
Evg
def log(func):
def wraper(*a, **kw):
return func(*a, **kw)
return wraper

@log
def f():
print 'f'


print locals()['f'] # - выдаст <function wraper at 0x00CBF3F0>. Как добраться до объекта реальной ф-и f?
pyuser
ostroglaz
Имеете ввиду что-то типа этого

def log(func):
def wraper(*a, **kw):
return func(*a, **kw)
return wraper

@log
def f():
print 'f'

a = locals()['f']
a()
?
скорее так:
from functools import wraps
def log(func):
@wraps(func)
def wraper(*a, **kw):
return func(*a, **kw)
return wraper

@log
def f():
print 'f'

print locals()['f']
Evg
Есть еще один вариант прикрепить f, к wraper как аттрибут.
bazooka
>>> f.func_closure[0].cell_contents
<function f at 0x02BD3770>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB