You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何类实例列表与Pygame/Python全局列表表现不同?

问题原因分析与解决办法

核心问题

你使用platformObjects = [Platform()] * Platform.countOfPlatforms创建列表时,并没有生成10个独立的Platform实例——这个写法只是把同一个Platform对象的引用重复了10次存入列表。列表里的所有元素指向的都是内存中同一个对象。

现象解释

循环调用setPos时,你每次修改的都是同一个对象的位置属性,每次修改都会覆盖之前的值。循环中打印时,是修改完当前(实则为同一个对象)的位置就输出,所以看起来是随机值;但循环结束后,该对象的位置被最后一次setPos的结果覆盖,主循环遍历列表时,所有元素都是这个对象,自然显示的位置完全相同。

全局列表正常的原因

你改用全局列表platforms时,应该是通过正确方式生成了多个独立实例(比如列表推导式),每个元素都是全新的Platform对象,各自的位置属性独立,不会互相覆盖,因此显示正常。

正确的实例创建方式

替换成列表推导式,确保每次循环都生成新实例:

platformObjects = [Platform() for _ in range(Platform.countOfPlatforms)]

内容的提问来源于stack exchange,提问作者Bondrusiek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 02:34:56