班级分布

2024-10-04 09:21:15 发布

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

课程如下:

class Player:
    #variables
    hand = []
    name = 'Test Player'
    #functions
    def take(self, card): #allows player to take a card
        self.hand.append(card)
    def __str__(self):
        msg = self.name
        if len(self.hand) > 0:
            msg = msg + "\nIn hand:"
            for card in self.hand:
                msg = msg + ' ' + card.short_name
        return msg

函数如下:

^{pr2}$

问题就在这里。当我调用函数向五个玩家发牌时,这就是我得到的结果。在

Player 1
In hand: JC 2H KD 8H QD KH AS 10S QC 10H AH 6S JD 4H 5S 4S 9C 3C QH 9S AD 6D 8S 10C 7C
25

Player 2
In hand: JC 2H KD 8H QD KH AS 10S QC 10H AH 6S JD 4H 5S 4S 9C 3C QH 9S AD 6D 8S 10C 7C
25

Player 3
In hand: JC 2H KD 8H QD KH AS 10S QC 10H AH 6S JD 4H 5S 4S 9C 3C QH 9S AD 6D 8S 10C 7C
25

Player 4
In hand: JC 2H KD 8H QD KH AS 10S QC 10H AH 6S JD 4H 5S 4S 9C 3C QH 9S AD 6D 8S 10C 7C
25

Player 5
In hand: JC 2H KD 8H QD KH AS 10S QC 10H AH 6S JD 4H 5S 4S 9C 3C QH 9S AD 6D 8S 10C 7C
25

后来的数字在我的测试代码中只是一个很小的调试代码,没有任何影响。在


Tags: inselfasmsgcardkdjdplayer
1条回答
网友
1楼 · 发布于 2024-10-04 09:21:15

您的问题是您的hand = []列表附加到类;它是一个类属性,在实例之间共享。在

__init__方法中为每个玩家创建一个新列表:

class Player:
    def __init__(self):
        self.hand = []

相关问题 更多 >