我有一个列表,我在其中创建了对象,然后将它们放入列表中,但是当我更新对象本身时,它不会更新列表中的对象。
设置代码:
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 代码,所以不应该有影响)并且当我使用变量检查器时,无论我放入多少个对象,它都只在列表中显示一个指针。
答案 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