对象更新时 Python 更新列表中的对象

时间:2021-04-10 10:36:58

标签: python list object pointers

我有一个列表,我在其中创建了对象,然后将它们放入列表中,但是当我更新对象本身时,它不会更新列表中的对象。

设置代码:

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 代码,所以不应该有影响)并且当我使用变量检查器时,无论我放入多少个对象,它都只在列表中显示一个指针。

1 个答案:

答案 0 :(得分:3)

您真的要从 char 方法返回一个新的 update() 吗?这样做意味着您希望 char 成为一个值对象。

也许你只是想更新对象:

class char:
    def __init__(self, name, age=0):
        self.name = name
        self.age = age
    def update(self, age='nil'):
        if age != 'nil':
            self.age = age

Mile = char("mile", age=12)
Pauline = char("pauline", age=14)

chars = [Mile, Pauline]
Mile.update(age = 16)
print(chars[0].age)

输出:

16