首页 > 解决方案 > 如何暗示变量是从另一个类继承的类?

问题描述

考虑这个人为的代码片段:

class Fooer():
    def __init__(self, *args, **kwargs):
        # do things

    def foo(self) -> int:
        # do more things

def foo(fooer, *args, **kwargs) -> int:
    return x(*args, **kwargs).foo()

我想暗示 to 的fooer论点foo()应该是Fooer. 它不是 的实例Fooer,它Fooer本身或其子类。我能想到的最好的是

def foo(fooer: type, *args, **kwargs) -> int

这还不够具体。

我怎样才能更好地暗示这一点?

标签: pythonpython-3.xtype-hintingmypy

解决方案


从 PEP-484(类对象的类型)开始,解决方案是用来Type[C]指示 的子类C,其中Cvar 是由基类限定的类型。

F = TypeVar('F', bound=Fooer)

def foo(fooer: Type[F], *args,**kwargs) -> int:
    ...

(公平地说,我不太明白在TypeVar此处使用 PEP-484 与在@es 的答案中使用类本身之间的区别。)


推荐阅读