gpt4 book ai didi

python - 对象列表功能不起作用

转载 作者:行者123 更新时间:2023-11-28 20:04:41 24 4
gpt4 key购买 nike

对不起标题,我希望它能正确反射(reflect)我的问题:

在下面的代码中,我期望结果是结果 0 1 2 但我得到的却是 2 2 2。my_function 中的代码似乎是用 的最后一个实例解释的对象。怎么了?

class Example:
def __init__(self, x):
self.x = x

def get(self):
return self.x

a_list = []
for index in range(3):
obj = Example(index)

def my_function(x):
#some stuff with x like obj.another_function(x)
return obj.get()

a_list.append(my_function)

for c in a_list:
print(c())

最佳答案

当你定义它时

def my_function():
return obj.get()

Python 会理解 my_function 应该运行名为 obj 的对象的 get() 方法并返回值。在您尝试调用它之前,它不会知道 obj 的值以及 get() 方法的作用。

因此,您实际上定义了三个不同的函数,它们最终会做相同的事情。最后,运行相同 代码三次。

但为什么返回的是 2 2 2?

因为在最后一次迭代之后,obj 的值是Example(2)* 因为你在每次迭代都重新定义它的值,而最后一个仍然存在。

*因为这一行 obj = Example(index)

关于python - 对象列表功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35463305/

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