首页 > 解决方案 > 在列表中追加时出现运行时错误

问题描述

我想制作一个游戏,其中“卡片”是游戏中各种卡片的类。“玩家”作为一个类,其中包含包含卡片对象的卡片列表。“游戏”作为一个类,其中包含包含玩家对象的玩家列表。因此,当我创建一个游戏对象时,它运行良好。当玩家对象附加到游戏对象中时,一切正常。问题-但是当卡片对象附加到玩家对象中时。所有卡对象都附加在所有玩家中

我正在使用 PyCharm 和 Python3.6.2(v3.6.2:5fd33b5)

class game:
    players=[]

class player:
    cards=[]

class card:
    def __init__(self,number,suit,player):
        self.number=number
        self.suit=suit
        self.player=player

if __name__ == "__main__":
    g=game()
    for i in range(0,4):
        g.players.append(player())
    for i in range(0,52):
        g.players[i%4].cards.append(card(i%13,i/13,i%4))

预期 - 据我所知,每个玩家应该包含 13 张牌。

标签: python-3.x

解决方案


原因是你如何定义player类;cards被定义为变量,这意味着每个实例player共享相同的cards变量。由于每个玩家应该有不同的牌,cards应该是一个实例变量,如下:

class player:

    def __init__(self):
        self.cards=[]

顺便说一句:通常最好给你的类起首字母大写名称,Game比如ClassPlayer


推荐阅读