Вопрос по декоратору в Python

Есть декоратор @to_json, он возвращает строку json. Если вызвать print(get_map.__name__), будет ошибка тк get_map - уже строка. @wraps(func) не помогает. Подскажите как быть?

import json
from functools import wraps


def to_json(func):
    @wraps(func)
    def wrapped():
        result  = json.dumps(func())
        return result      
    return wrapped()

@to_json
def get_map():
    return {
        'number' : 100
        }

print(get_map.__name__)

Ответы (1 шт):

Автор решения: gil9red

В декораторе не нужно вызывать wrapped(), нужно просто вернуть ссылку на функцию. Подправил, дополнительно добавил аргументы *args и **kwargs

Пример:

import json
from functools import wraps

def to_json(func):
    @wraps(func)
    def wrapped(*args, **kwargs):
        return json.dumps(func(*args, **kwargs))
    return wrapped

@to_json
def get_map():
    return {
        'number': 100
    }

print(get_map)
print(get_map.__name__)
print(get_map(), type(get_map()))

Результат:

<function get_map at 0x0000018F5B88E3A0>
get_map
{"number": 100} <class 'str'>
→ Ссылка