【发布时间】:2018-11-09 14:40:59
【问题描述】:
我正在尝试编写一个用于文本操作的类。这个想法是类将支持基本的文本预处理,但如果有人想编写一个非常复杂的预处理函数,他们应该能够使用基类并覆盖它。我尝试了以下方法,即使我可以以某种方式使其工作,但我认为这不是正确的方法。
class TextPreprocessor:
def __init__(self, corpus):
"""Text Preprocessor base class.
corpus: a list of sentences
"""
self.corpus = corpus
self.word_tokens = [self.preprocess(sentence) for sentence in corpus]
def preprocess(self,sentence):
"""
strip each sentence , lowercase it and split by space # sentence.strip().lower().split()
"""
return sentence.strip().lower().split()
def preprocess_transform(self,sentence):
return self.preprocess(sentence)
现在,如果我想编写一个新的预处理函数,这是最好的方法。我试过了,
class SubPreprocess(TextPreprocessor):
def __init__(self, corpus):
#### dummy preprocess function
def preprocess(self, sentence):
return sentence.strip().split() + ['HELLOOOOOOOOOOLLLL']
super.__init__(corpus)
它不工作。我基本上想要的是预处理函数(修改后的),应该能够覆盖基类TextPreprocessor中的那个,这样当__init__被调用时,self.word_tokens,应该基于新的预处理函数
【问题讨论】:
-
你为什么要newting
__init__中的函数?
标签: python python-3.x class inheritance overriding