gpt4 book ai didi

Python如何将方法的结果转换为生成器

转载 作者:太空狗 更新时间:2023-10-30 00:06:04 25 4
gpt4 key购买 nike

我有以下继承:

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 可以处理列表操作,而且当调用迭代器时它会返回一个生成器?

最佳答案

我想我有一个想法:

class DBListings(object):
def __iter__(self):
for page in pages:
for data in db.fetch_from_query(...):
yield data

def __len__(self):
return db.get_total_from_query(...)
"""
Or the following
counter = 0
for x in self:
counter += 1
return counter
"""

class DBProcessor(Processor):
def get_listings(self):
"""
return a large set of paginated data
"""
return DBListings()

更新:刚刚测试了上面的代码,有效。

关于Python如何将方法的结果转换为生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36683133/

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