Jul*_*lie 8 python methods generator
将类中的方法用作生成器是否可接受/ Pythonic?我找到的所有示例都在函数中显示yield语句,而不是在类中.
这是一个示例工作代码:
class SomeClass(object):
def first_ten(self):
for i in range(10):
yield i
def test(self):
for i in self.first_ten():
print i
SomeClass().test()
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 23
是的,这是完全正常的.例如,它通常用于实现一种object.__iter__()方法:
class SomeContainer(object):
def __iter__(self):
for elem in self._datastructure:
if elem.visible:
yield elem.value
Run Code Online (Sandbox Code Playgroud)
但是,不要被这种常见的模式所限制; 任何需要迭代的东西都是生成器方法的候选者.
| 归档时间: |
|
| 查看次数: |
5006 次 |
| 最近记录: |