考虑以下人为设计的代码段:

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()


我想暗示fooerfoo()参数应该是Fooer的子类。它不是Fooer的实例,它是Fooer本身或其子类。我能想到的最好的是

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


还不够具体。

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

最佳答案

在PEP-484(The type of class objects)中,解决方案是使用Type[C]指示C的子类,其中C是受基类限制的类型var。

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

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


(公平地说,我在PEP-484指示的此处使用TypeVar与在@ e.s。的答案中使用类本身之间并没有什么区别。)

关于python - 如何暗示变量是从另一个类继承的一个类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50822164/

10-14 17:43