Как напечатать подсказку возвращаемое значение подкласса Exception? - PullRequest
3 голосов
/ 28 мая 2019

У меня есть абстрактный метод в моем базовом классе, и я хочу, чтобы все подклассы возвращали итерацию своих ожидаемых 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 Ответ

4 голосов
/ 28 мая 2019

Вы хотите typing.Type, который указывает, что вы возвращаете тип , а не экземпляр :

from typing import Type, Iterable

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