I'm trying to write decorator that takes additionalparameter like this
def dec(arg):
    def modifier(cls) -> cls:
        # modify cls
        return cls;
    pass
    return modifier;
pass
@dec(63)
class X:
    a: int = 47;
pass
This is, of course, error, since cls is not defined.
I've tried dec(arg: int) -> Callable[[type], type] and modifier(cls: type) -> type
but that messes up IntelliSense (vscode) (writing X. no longer offers a)
Use TypeVar to define a generic type that you can use to annotate your function. Use Type to annotate that the function accepts and returns types/classes of the TypeVar
from typing import TypeVar, Type
T = TypeVar('T')
def dec(arg):
    def modifier(cls: Type[T]) -> Type[T]:
        # modify cls
        return cls
    return modifier
@dec(63)
class X:
    a: int = 47
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With