У меня есть следующая иерархия классов в Python 3:
class Corpus(ABC):
__metaclass__ = ABCMeta
@staticmethod
@abstractmethod
def load(folder: str, **kwargs) -> 'Corpus':
pass
class GenMmCorpus(Corpus):
@staticmethod
def load(self, folder: str, **kwargs) -> Corpus:
...
return GenMmCorpus(corpus, dictionary, method, lemmatize, voc_size)
И я использую предыдущий код следующим образом:
corpus: GenMmCorpus = GenMmCorpus.load(folder)
Хотя этот код работает нормально, PyCharm дает мне следующий совет:
Expected type 'GenMmCorpus', got 'Corpus' instead in a subclass
Кто-нибудь знает, как избежать этого предупреждения? Если я удаляю ввод 'GenMmCorpus', появляется другое предупреждение, когда я пытаюсь использовать указанные c методы GenMmCorpus, которых нет в базовом классе. Таким образом, решение не может быть удалено следующим образом:
corpus = GenMmCorpus.load(folder)