import re import reprlibRE_WORD = re.compile('\w+')classSentence(object):def__init__(self, text):self.text = textself.words = RE_WORD.findall(text)# re.findall函数返回一个字符串列表,得到匹配的单词# 我们只实现了__getitem__方法def__getitem__(self, index):return self.words[index]def__repr__(self):return'Sentence(%s)'% reprlib.repr(self.text)s = Sentence('My favorite language is python !') print(s) # 我们迭代打印s中的值,打印成功则Sentence类是可以迭代的 for word in s:print(word)
Sentence('My favorite ...e is python !') My favorite language is python
import re import reprlibRE_WORD = re.compile('\w+')classSentence(object):# 可迭代对象实现__iter__def__init__(self, text):self.text = textself.words = RE_WORD.findall(text)def__repr__(self):return"Sentence(%s)"% reprlib.repr(self.text)def__iter__(self):return SentenceIterator(self.words)classSentenceIterator(object):# 迭代器实现__next__和__iter__def__init__(self, words):self.words = wordsself.index =0def__next__(self):try:word = self.words[self.index]except IndexError:raise StopIterationself.index +=1return worddef__iter__(self):return selfs1 = Sentence('My favorite language is Python!') print(s1) print('================================')for word in s1:print(word)it =iter(s1) print('================================') print(next(it)) print(next(it))
Sentence('My favorite ...ge is Python!') ================================ My favorite language is Python ================================ My favorite
import re import reprlibRE_WORD = re.compile('\w+')classSentence(object):# 可迭代对象实现__iter__def__init__(self, text):self.text = textself.words = RE_WORD.findall(text)def__repr__(self):return"Sentence(%s)"% reprlib.repr(self.text)def__iter__(self):# 替换成生成器函数for word in self.words:yield words2 = Sentence('My favorite language is Pythooooon!') print(s2) print('================================')for word in s2:print(word) print('================================')it =iter(s2) print(next(it)) print(next(it))
Sentence('My favorite ...s Pythooooon!') ================================ My favorite language is Pythooooon ================================ My favorite