我期望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'}
在您的代码中,两个实例中cards
的值是相同的,因为您已将cards
设置为类变量,这意味着该类的所有实例都共享它。
要解决您的问题,请使cards
为实例变量。这样编写您的课程:
class Deck:
def __init__(self, key, value):
self.cards = {
key: value,
}
请注意,return
是不必要的,因为无论如何初始化器都将在最后返回。