我正在尝试实现一个看起来像这样的装饰器
def decorator(cls):
class _Wrapper(cls):
def func(self):
super().func()
print("patched!")
return _Wrapper
我想知道如何提示
cls
和返回值类型。我尝试使用 _Class=TypeVar("_Class")
和 cls: Type[_Class]
但 mypy 抱怨值 cls 作为一种类型无效。我也不知道如何提示返回类型。
类的类型是“type”:
class new:
pass
print(type(new))
输出:
<class 'type'>
您可以设置:
def decorator(cls: type) -> type:
class _Wrapper(cls):
def func(self):
super().func()
print("patched!")
return _Wrapper
或者您可以定义自定义类型名称,例如:
type _claas = type
def decorator(cls: _claas) -> _claas:
class _Wrapper(cls):
def func(self):
super().func()
print("patched!")
return _Wrapper