首页 > 解决方案 > 2个类的实例,但似乎它们是相同的

问题描述

我期待 obj1 和 obj2 会有不同的 deck.cards,为什么它们是相同的,我如何使它们成为 2 个实例?

class deck:
    cards ={}
    def __init__(self, key, value):
        self.cards[key]=value
        return
>>> obj1 = deck("a", "1")
>>> obj2 = deck("b", "2")
>>> print (obj1.cards, obj2.cards)
{'a': '1', 'b': '2'} {'a': '1', 'b': '2'}

标签: pythonclassinstantiation

解决方案


在您的代码中,cards两个实例中的值是相同的,因为您创建了cards一个类变量,这意味着它由该类的所有实例共享。

要解决您的问题,请创建cards一个实例变量。像这样写你的类:

class Deck:
    def __init__(self, key, value):
        self.cards = {
            key: value,
        }

请注意,这return是不必要的,因为初始化程序无论如何都会在最后返回。


推荐阅读