【发布时间】:2021-04-10 10:36:58
【问题描述】:
我有一个列表,我在其中创建了对象,然后将它们放入列表中,但是当我更新对象本身时,它不会更新列表中的对象。
设置代码:
class char:
def __init__(self, name, age=0):
self.name = name
self.age = age
def update(self, age='nil'):
if age == 'nil': age = self.age
return char(self.name, age)
Mile = char("mile", age=12)
Pauline = char("pauline", age=14)
chars = [Mile, Pauline]
我如何更新角色:
Mile = Mile.update(age = 16)
但是如果我得到chars[0].age,它仍然返回12,除非我这样做chars[0] = Mile。
我的问题是:当我更新对象本身时,有没有办法自动更新列表中的对象?我一直在寻找,但还没有找到答案。我应该注意这在 renpy 中(虽然它是 renpy 中的常规 python 代码,所以不应该有效果),当我使用变量检查器时,无论我放入多少对象,它都只会在列表中显示一个指针。
【问题讨论】:
-
您没有在
update方法中更新您的更新成员 - 您返回一个不同的新对象。为什么对象本身要改变?你为你的更新方法提供一个新的年龄,然后你用你的实例的年龄覆盖提供的年龄并创建一个新的实例......你永远不会修改实例update被调用
标签: python list object pointers