我有以下继承关系:
class Processor(object):
def get_listings(self):
"""
returns a list of data
"""
raise NotImplemented()
def run(self):
for listing in get_listings():
do_stuff(listing)
class DBProcessor(Processor):
def get_listings(self):
"""
return a large set of paginated data
"""
...
for page in pages:
for data in db.fetch_from_query(...):
yield data
尽管这个方法可以正常运行,但是在进行
len(self.get_listings())
或者其他列表操作时会失败。我的问题是如何重构代码,使得
DBProcessor.get_listings
能够处理列表操作,但同时当调用迭代器时它也会返回一个生成器?
sum(1 for _ in self)
会做同样的事情。db.fetch_from_query
返回什么? - Padraic Cunningham