Код: Выделить всё
from functools import wraps
from typing import Any, Callable, cast
def decorator(*args: Any, **kwargs: Any) -> Any:
class Wrapper:
def __init__(self) -> None:
self.args = args
self.kwargs = kwargs
def __call__(self, func: Callable[..., Any]) -> Callable[..., Any]:
@wraps(func)
def wrapper(*args: Any, **kwargs: Any) -> Any:
return func(*args, **kwargs)
return wrapper
return Wrapper()
На данный момент я обнаружил, что следующий «трюк» наследования работает так, как я ожидал:
p>
Код: Выделить всё
from functools import wraps
from typing import Any, Callable, cast
class BaseWrapper:
def __call__(self, func: Callable[..., Any]) -> Callable[..., Any]:
@wraps(func)
def wrapper(*args: Any, **kwargs: Any) -> Any:
return func(*args, **kwargs)
return wrapper
def decorator(*args: Any, **kwargs: Any) -> BaseWrapper:
class Wrapper(BaseWrapper):
def __init__(self) -> None:
self.args = args
self.kwargs = kwargs
return Wrapper()
Подробнее здесь: https://stackoverflow.com/questions/771 ... fined-with