带有Python类型提示的函数,它接受类A并输出继承自A的类

问题描述 投票:0回答:1

我正在尝试实现一个看起来像这样的装饰器

def decorator(cls):
    class _Wrapper(cls):
        def func(self):
            super().func()
            print("patched!")
    return _Wrapper

我想知道如何提示

cls
和返回值类型。我尝试使用
_Class=TypeVar("_Class")
cls: Type[_Class]
但 mypy 抱怨值 cls 作为一种类型无效。我也不知道如何提示返回类型。

python python-typing
1个回答
0
投票

类的类型是“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
© www.soinside.com 2019 - 2024. All rights reserved.