如何键入提示Exception的子类的返回值?

时间:2019-05-28 07:04:13

标签: python python-3.x type-hinting python-typing

我的基类中有一个抽象方法,并且我希望所有子类返回其预期的Exception类的可迭代方法:

class Foo(metaclass=ABCMeta):
    @abstractmethod
    def expected_exceptions(self):
        raise NotImplementedError()

class Bar(Foo):
    def expected_exceptions(self):
        return ValueError, IndexError

class Baz(Foo):
    def expected_exceptions(self):
        yield from self.manager._get_exceptions()

如何键入提示此返回值?起初我想到了-> Iterable[Exception],但这意味着它们是Exception的实例,而不是子类。

1 个答案:

答案 0 :(得分:4)

您想要typing.Type,它指定您要返回类型,而不是 instance

from typing import Type, Iterable

def expected_exceptions(self) -> Iterable[Type[Exception]]:
    return ValueError, IndexError