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

Python列表元素均同问题:游戏时间字段全部更新为最终值

问题分析与解决方案

嘿,我一眼就发现你代码里的问题啦!

问题根源

你在Field类的__init__方法里用了这行代码创建游戏列表:

self.games = [Game()] * numTimes

这里的坑在于:用[对象] * 数量的方式创建列表时,列表里的每一项其实都是同一个对象的引用,不是各自独立的新对象。也就是说,你这4个“Vic Park”对应的Game,本质上是同一个实例!所以不管你给哪个游戏设置time,都是在修改同一个对象的属性,最后所有游戏自然都会显示最后一次设置的那个时间值。

修复方法

把创建游戏列表的代码改成列表推导式,这样每次循环都会创建一个全新的Game实例:

self.games = [Game() for _ in range(numTimes)]

修改后的完整代码

class Game:
    time = 0
    team1 = ""
    team2 = ""

class Field:
    def __init__(self, numTimes = 0, name = "", daysAvail = 0):
        self.numTimes = numTimes
        # 用列表推导式生成独立的Game实例
        self.games = [Game() for _ in range(numTimes)]
        self.name = name
        self.daysAvail = daysAvail

fieldList = []
fieldList.append(Field(4,"Vic Park", 5)) # 5 = 周一和周三,二进制0000101,最低位是周一

这样修改后,每个游戏都是独立的Game对象,你给它们设置不同的time值,就会各自显示对应的时间啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:13:01