python - Python 更改列表中的值会无意中更改它们
问题描述
我有一堂课:
class Tree(object):
def __init__(self):
self.health = 100
我在这里使用它:
tree_list += [Tree()] * random.randint(4, 12)
这使得列表包含多个 Tree() 类。问题是,当我在 tree_list 中的一项中更改“健康”时:
tree_list[0].health -= 25
它会更改 tree_list 中每个项目的“健康”值。有人可以帮我弄清楚为什么它会改变每个项目的价值而不是我打算改变的项目吗?任何帮助,将不胜感激。:D
解决方案
我通过改变这个来解决它:
tree_list += [Tree()] * random.randint(4, 12)
对此:
for a in range(random.randint(4, 12)):
tree_list.append(Tree())
可能不是最好的方法,但它现在有效。
推荐阅读
- office-interop - Outlook 新邮件 - 工具栏下方的文本区域
- javascript - 是否可以模拟 isTrusted=true
- javascript - 将数据目标作为道具传递
- mysql - 分区 SQL 表
- c# - Unity中使用ZXing定位二维码的位置模式
- c# - 映射数据类型 Oracle 和 C# 时出错
- android - 我在更新 android studio 3.1.2 时遇到了这个问题
- android - Android 连接到非活动网络
- delphi - 大型 Delphi exe 和维护问题
- java - 使用 JAVA 实现 NETIQ IDAM LDAP