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

2024-09-28 20:57:34 发布

您现在位置:Python中文网/ 问答频道 /正文

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

设置代码:

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


Tags: 对象代码nameself列表agedefupdate
1条回答
网友
1楼 · 发布于 2024-09-28 20:57:34

你真的想从update()方法返回一个新的char吗?这样做意味着您希望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

相关问题 更多 >