替换列表中对象的属性--Python

时间:2018-01-22 01:56:07

标签: python list

如何更新对象中的属性,对象在列表中

class kas:
    nom ="a"
    p1=""
    p2=""
    def __init__(self,nom,p1,p2):
        self.nom = nom
        self.p1=p1
        self.p2=p2

    @staticmethod
    def acoter(nom,b1,b2,maliste):
        newlist=list()
        for i,k in maliste:
            if nom==k.nom:
                 maliste.remove(i)
                 k.p1[0]=b1[0]
                 k.p2[0]=b2[0]
                 maliste.insert(i, k)

我如何更新对象k中的元素p1并在我的恶意中更新他?

1 个答案:

答案 0 :(得分:1)

嗯......我不知道我是否抓住了你的问题。您是说要更新对象 k 中的元素 p1 ,而且maliste中的 k 也会更新吗?

我建议重写这样的acoter方法:

@staticmethod
def acoter(nom, b1, b2, maliste):
    for i, k in enumerate(maliste):
        if kas.nom == k.nom:
            k.p1[0] = kas.b1[0]
            k.p2[0] = kas.b2[0]

因为maliste是list()而您只是将对象k附加到列表中,所以我怀疑for i,k in maliste:会抛出错误。

要更新列表中对象的属性,您只需获取对象的引用并更新其属性即可。所以我认为你不需要从maliste中删除并再次将此更新的对象插入maliste列表。而且,新列表列表是不需要的。