Типизация Python — унаследованный класс

У меня есть класс ABC, который называется Hub, и класс, который наследуется от него, и называется HistoricalHub.

# engine/hub.py

from abc import ABC, abstractmethod

class Hub(ABC):
    @abstractmethod
    def method1(self):
    """"""

class HistoricalHub(Hub):
    @abstractmethod
    def method1:
        some_real_code()

HistoricalHub, а также все остальные классы, наследуемые от Hub, используются в качестве параметра в другом классе (назовем его SimpleClass). Я использую подсказку, и я сделал следующее:

import engine.hub

class SimpleClass:
    def __init__(self, hub: engine.hub.Hub):
        some_real_code()

Первоначально я думал, что HistoricalHub (или любой другой класс, использующий Hub) будет идентифицирован как экземпляр Hub. Однако PyCharm выдает следующее предупреждение:

Ожидаемый тип «Hub», получен «Type[HistoricalHub]».

Обратите внимание, что это не фактическая проблема, которая препятствует запуску кода. Мне просто любопытно, можно ли создать такую ​​типизацию.


person Stanislav Lazarov    schedule 09.09.2018    source источник
comment
Вы передали класс, а не ожидаемый экземпляр. Здесь важна разметка Type[...], а не то, что это подкласс.   -  person Martijn Pieters    schedule 09.09.2018
comment
@MartijnPieters Отредактировал сообщение с вашим решением. Спасибо!   -  person Stanislav Lazarov    schedule 09.09.2018
comment
Пожалуйста, не добавляйте ответы на вопрос; в дублирующем сообщении уже есть ответ.   -  person Martijn Pieters    schedule 09.09.2018