Python 3.x 按需获取方法生成的值
我使用的API与此类似:Python 3.x 按需获取方法生成的值,python-3.x,Python 3.x,我使用的API与此类似: class API: def start(self): self._calculate(100) def _calculate(self, n): # do some calculation for i in range(n): self.on_value_calculated(i**2) def on_value_calculated(self, x):
class API:
def start(self):
self._calculate(100)
def _calculate(self, n):
# do some calculation
for i in range(n):
self.on_value_calculated(i**2)
def on_value_calculated(self, x):
raise NotImplementedError
start
是一种公共方法,on\u value\u computed
是一种抽象方法,calculate
是一种受保护的方法。为了获得API计算的值,我应该创建一个新类,继承自API
,并覆盖上的
,因此:
class MyAPI(API):
def on_value_calculated(self, x):
print(x)
我的问题是:在上面的代码中,当我运行start
方法时,所有100次迭代都会一次接一次地调用。如何按需获取计算值,如下面的伪代码
api = MyAPI()
api.start()
def get_next():
item = next(api)
label.set_text(item.text)
print('Another item generated!')
button.set_command(get_next)
我想在start
中使用yield from
,在中使用yield
对计算出的值进行计算
:
def get_next():
item = yield from api.start()
label.set_text(item.text)
class MyAPI(API):
def on_value_calculated(self, x):
yield x
但是它引发了NoneType不是一个iterable
我可以实现\uuuuuuuuuuuuuuuuuuuuuuuuu
方法,但我认为没有办法将计算出的值发送到\uuuuuuuuuuuuuuuuuuuuuu
返回值。我希望按需运行的原因是,计算出的值使用了一些内存,而拥有这些值的列表可能会使程序速度变慢
谢谢你的帮助