【发布时间】:2017-10-24 17:47:59
【问题描述】:
对于一个学校项目,我正在尝试将棋盘游戏转换为 Python 游戏
我正在翻译的游戏是“股票行情”,它涉及买卖 6 只“股票”。可以玩的玩家数量为2-8。我制作可变玩家人数的方法是创建一个玩家类,并初始化一个玩家对象并在游戏开始时将其添加到列表中。
class player:
money = 5000
stocks = {'Gold': 0, 'Tech': 0, 'Oil': 0, 'Grain': 0, 'Industry': 0, 'Bonds': 0}
我用
创建列表for i in range(0, playersTotal):
newPlayer = player()
playerList.append(newPlayer)
问题是当玩家买卖股票并调整价值时说:(假设玩家0有0金币)
playerList[0].stocks['Gold'] += 1000
每个玩家的每个字典都以相同的方式更新
print(playerList[1].stocks['Gold'])
>>>1000
我不知道为什么要为列表中的所有玩家对象更新字典,因为当金钱属性被调整时,它保持独立:(如果两个玩家都有 0 金钱)
playerList[0].money += 1000
print(playerList[1].money)
>>> 0
如何将字典分开?
【问题讨论】:
-
您正在跨实例使用相同的字典。当您对字典进行变异时,将跨实例看到效果。
-
你需要在
__init__函数中定义变量。 -
@MauriceMeyer 虽然这是个好建议,但从根本上说,变量必须是实例变量,无论它们是在哪里定义的。
标签: python python-3.x dictionary