python– 在我的类的实例上调用iter()不会创建其当前值的“快照”?

python– 在我的类的实例上调用iter()不会创建其当前值的“快照”?,第1张

概述所以我在Python中创建了一个自定义类,它支持使用__iter__方法进行迭代.我的__iter__方法被构造为生成器对象,使用yield来给出类实例中的每个值.我发现如果我说x = iter(my_instance)然后编辑存储在我实例中的数据,如果我随后用x构建一个列表,我会发现该列表包含my_class当前具有的值,而不是我调用iter()时的值.所

所以我在Python中创建了一个自定义类,它支持使用__iter__方法进行迭代.我的__iter__方法被构造为生成器对象,使用yIEld来给出类实例中的每个值.

我发现如果我说x = iter(my_instance)然后编辑存储在我实例中的数据,如果我随后用x构建一个列表,我会发现该列表包含my_class当前具有的值,而不是我调用iter()时的值.

所以我的问题在这一点上是双重的.首先,是应该发生什么?如果是这样,为什么它会那样工作?

以上是主要的,但如果你真的想要超越,请继续阅读.现在我问这个问题的原因是我必须在大学里创建这门课程.我的教授已经提供了一个程序,它将对我创建的这个类进行一系列测试,以便让我对第一次是否正确完成它有一个很好的了解.

我的程序通过除最后一个之外的每一个检查,基本上完成了上面描述的 *** 作.问题是它期望从之前调用iter(my_object)构建的列表仅反映在调用iter()时存储在my_object中的值.

看完之后我的初步反应是我的教授打算得到一个类似于简单调用List(my_object)的结果,但我是这里的学生,所以我似乎更有可能以一种非常奇怪的方式编写我的__iter__方法,这是导致这种行为.或者Python是否改变了iter()函数最近的工作方式?

我宁愿不发布我的代码,因为它是一个类,从技术上讲,这可能被认为是作弊(我知道这是愚蠢和无益的,对不起).但是,我可以链接规范,这是正确的here(具体是第1部分,Bag类).最佳答案这项任务似乎会给你一个强烈的暗示,告诉你应该如何解决这个问题

Ensure that the iterator produces those values in the Bag at the time
the iterator starts executing; so mutating the Bag during iteration
will not affect what values it produces.

Hint: Write this method as a call to a local generator,passing a copy
of the dictionary (covered in FrIDay’s lecture in Week 4).

总结

以上是内存溢出为你收集整理的python – 在我的类的实例上调用iter()不会创建其当前值的“快照”?全部内容,希望文章能够帮你解决python – 在我的类的实例上调用iter()不会创建其当前值的“快照”?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1206401.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-04
下一篇2022-06-04

发表评论

登录后才能评论

评论列表(0条)

    保存