2 class的实例,但似乎它们是相同的[duplicate]

问题描述 投票:-3回答:1

我期望obj1和obj2的卡号不同。为什么它们相同,如何使它们成为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'}
python class instantiation
1个回答
0
投票

在您的代码中,两个实例中cards的值是相同的,因为您已将cards设置为类变量,这意味着该类的所有实例都共享它。

要解决您的问题,请使cards为实例变量。这样编写您的课程:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.