将元素添加到集合中,会将元素添加到包含此元素的对象的所有实例中

2024-04-16 21:32:06 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨 我已经创建了一个对象列表。每个对象都包含一个集合。我想更新列表中所有对象的集合内容。我写的代码是

class Player:
    name = ""
    cardsInHand = set()
    hasBid = False
    def __init__(self, name):
        self.name = name 

class CardDeck:
    deck = []

    def __init__(self):
        for i in range(39) :
        if i%10>0 and i%10<9 :
                self.deck.append(i)

    def dealCards(self,player):
        cardIndex = 0
        for tempPlayer in player:
            for j in range(4): # since want to add four elements at a time
                tempPlayer.cardsInHand.add(self.deck.pop(cardIndex))
                cardIndex = cardIndex +1

在main方法中,我使用以下代码调用上述类

players = []
players.append(Player("Player0"))
players.append(Player("Player1"))
players.append(Player("Player2"))
players.append(Player("Player3"))

cards.dealCards(players)

问题是dealCards方法将元素添加到所有对象集。不是每个对象集中的4个元素,而是每个对象集中的16个元素? 我是python新手,我做错什么了吗?你知道吗


Tags: 对象代码nameinself元素列表for