You need to enable JavaScript to run this app. Python自制卡牌游戏修改单个玩家deck时所有玩家deck同步变更问题
优惠活动
大模型
产品
解决方案
定价
更多

Python自制卡牌游戏修改单个玩家deck时所有玩家deck同步变更问题

问题根因

你定义Player类时,将deck、cards_av、power声明为了类属性,这类属性的内存空间是所有Player实例共享的。对于列表这类可变类型的类属性,任意一个实例对其做修改,所有实例的对应属性都会同步生效,这就是你给第0个玩家的deck添加元素后,第1个玩家的deck也会出现相同元素的核心原因。

修复方法

将原本的类属性迁移到__init__构造函数中,改为每个实例独有的实例属性即可,修改后的Player类代码如下:

class Player:
    def __init__(self, turn):
        self.turn = turn
        self.power = 4
        self.deck = []
        self.cards_av = []

另外你代码中的Game_Engine类里的objs、background、players等属性也都是类属性,如果后续你有创建多个Game_Engine实例的需求,也会出现相同的属性共享问题,建议也统一移到Game_Engine的__init__方法中初始化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 02:03:04