У меня есть иерархия наследования двух классов:
class TfIdfSimilarity(SimilarityModel):
@property
def corpus(self):
return self.model[self._corpus]
@property
def model(self):
return TfidfModel(self._corpus, dictionary=self._dict)
class LsiSimilarity(TfIdfSimilarity):
@property
def corpus(self):
tfidf_corpus = super().corpus
return self.model[tfidf_corpus]
@property
def model(self):
tfidf_corpus = super().corpus
return LsiModel(tfidf_corpus)
Однако, это вызывает бесконечную ошибку рекурсии, потому что всякий раз, когда я пытаюсь получить LsiSimilarity#model
, он вызывает TfIdfSimilarity#corpus
, что затемпытается получить доступ к модели и, таким образом, снова вызывает LsiSimilarity#model
.
Что я на самом деле хочу, так это чтобы TfIdfSimilarity#corpus
только когда-либо вызывал TfIdfSimilarity#model
, и никогда не рассматривал его версию дочернего класса.
Возможно ли это в Python?(Python 3) Если нет, как я могу лучше структурировать мою иерархию наследования, в то же время предоставляя тот же API через функции corpus
и model
(которые используются моей основной логикой).