gpt4 book ai didi

python - 在 Python 中调用当前类的方法版本

转载 作者:太空宇宙 更新时间:2023-11-04 11:20:32 26 4
gpt4 key购买 nike

我有一个两类继承层次结构:

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)如果没有,我如何更好地构建我的继承层次结构,同时仍然通过 corpusmodel 函数(我的主要逻辑使用它们)提供相同的 API ).

最佳答案

您可以 invoke descriptors directly通过从类中获取对描述符的引用,然后调用描述符的 __get__ 方法:

TfIdfSimilarity.model.__get__(self)

如果您发现自己经常这样做,这可能表明您应该使用常规方法而不是属性。

关于python - 在 Python 中调用当前类的方法版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56078640/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com