У меня есть функция, которая оформлена. Когда я вызываю __call__.co_names
, я хочу получить имена, перечисленные в функции, но вместо этого она дает мне имена, перечисленные в декораторе. Позвольте мне показать вам:
from functools import wraps
def decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
baz()
return func(*args, **kwargs)
return wrapper
@decorator
def foo():
bar()
def bar():
print('bar is the name I want')
def baz():
print('baz is the name I get')
def foo2(): # undecorated
bar()
foo.__code__.co_names
# ['baz']
foo2.__code__.co_names
# ['bar']
Могу ли я что-нибудь сделать для foo
перед вызовом .__code__.co_names
, чтобы получить имена внутри функции, а не функции декоратора?
В принципе, как мне сначала убрать все функции декоратора?