Lan*_*God 5 python iteration class
所以我在Python中创建了一个支持使用该__iter__方法迭代的自定义类.我的__iter__方法被构造为一个生成器对象,yield用于给出类实例中的每个值.
我发现,如果我说出类似的东西x = iter(my_instance),然后编辑存储在我的实例中的数据,如果我随后构建一个列表x,我会发现该列表包含my_class当前具有的值,而不是它当我有的值时叫iter().
所以我的问题在这一点上是双重的.首先,是应该发生什么?如果是这样,为什么它会那样工作?
以上是主要的,但如果你真的想要超越,请继续阅读.现在我问这个问题的原因是我必须在大学里创建这门课程.我的教授已经提供了一个程序,它将对我创建的这个类进行一系列测试,以便让我对第一次是否正确完成它有一个很好的了解.
我的程序通过除最后一个之外的每一个检查,基本上完成了上面描述的操作.问题是,它预期从先前的调用内置的名单iter(my_object),以反映只存储在值my_object在那个时候iter()被调用就可以了.
看完之后我的初步反应是,我的教授打算得到一个类似于简单调用的结果list(my_object),但我是这里的学生,所以我似乎更有可能以__iter__一种非常奇怪的方式编写我的方法,这导致了这个行为.或者Python改变了iter()函数最近的工作方式?
我宁愿不发布我的代码,因为它是一个类,从技术上讲,这可能被认为是作弊(我知道这是愚蠢和无益的,对不起).但是,我可以链接规范,这就在这里(特别是第1部分,Bag类).
这项作业似乎给了你一个强烈的提示,告诉你应该如何去做这件事
确保迭代器在开始执行时在 Bag 中生成这些值;因此在迭代过程中改变 Bag 不会影响它产生的值。
提示:将此方法编写为对本地生成器的调用,并传递字典的副本(在第 4 周的周五讲座中介绍)。
| 归档时间: |
|
| 查看次数: |
58 次 |
| 最近记录: |