Pruebas de decorador de clase de pitón

Estoy tratando de pasar argumentos opcionales a mi decorador de clase en python. Debajo del código que tengo actualmente:

class Cache(object):
    def __init__(self, function, max_hits=10, timeout=5):
        self.function = function
        self.max_hits = max_hits
        self.timeout = timeout
        self.cache = {}

    def __call__(self, *args):
        # Here the code returning the correct thing.


@Cache
def double(x):
    return x * 2

@Cache(max_hits=100, timeout=50)
def double(x):
    return x * 2

El segundo decorador con argumentos para sobrescribir el predeterminado max_hits=10, timeout=5 en mi__init__ función), no funciona y obtuve la excepciónTypeError: __init__() takes at least 2 arguments (3 given). Intenté muchas soluciones y leí artículos al respecto, pero aquí todavía no puedo hacer que funcione.

¿Alguna idea para resolver esto? ¡Gracias

Respuestas a la pregunta(3)

Su respuesta a la pregunta