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

Python类实例共享属性问题:如何创建独立的deck实例?

为什么两个Deck实例的cards完全相同?如何创建独立实例?

哈哈,这个问题我刚学Python的时候也踩过一模一样的坑!你的问题核心出在类属性和实例属性的区别上。

先看你写的代码:

class deck:
    cards ={}  # 这里定义的是类属性
    def __init__(self, key, value):
        self.cards[key]=value
        return

这里的cards是定义在类层级的属性,它属于整个deck类本身,而不是某个具体的实例。也就是说,所有deck的实例都会共享这同一个字典——不管你创建多少个实例,它们操作的都是同一个cards对象,所以obj1和obj2的cards自然会完全一样。

要让每个实例拥有独立的cards,你需要把cards变成实例属性,也就是把它放到__init__方法里,绑定到self上:

修正后的代码:

class deck:
    def __init__(self, key, value):
        self.cards = {}  # 每个实例初始化时创建属于自己的字典
        self.cards[key] = value

# 测试效果
obj1 = deck("a", "1")
obj2 = deck("b", "2")
print(obj1.cards, obj2.cards)  # 输出: {'a': '1'} {'b': '2'}

这样一来,每个deck实例在初始化的时候都会创建专属自己的cards字典,彼此之间的操作就不会互相影响啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 11:07:28