程序在for循环中跳过if语句

Mar*_*ary -3 python python-3.x

我正在尝试使用函数更新客户端详细信息.但它不起作用.我调试程序,我意识到它永远不会进入if.我不知道为什么?

这是功能:

def UpdateClient(self,id,cnp,name,adress):
    for i in range (len(self.clients.get_all())):
        if self.clients.get_all()[i].get_id==id:
            self.clients.get_all()[i].set_name(name)
            self.clients.get_all()[i].set_cnp(cnp)
            self.clients.get_all()[i].set_adress(adress)
Run Code Online (Sandbox Code Playgroud)

当我尝试更新客户端,我给了id,name,cnp,和adress,但是当我打印的清单不会发生任何变化.我无法进入if调试器,因为它说它们永远不会相等.为什么?

Mat*_*bin 5

注意与... get_id不一样get_id().前者引用该方法,而后者实际上称之为.

此外,考虑通过编写更多惯用的Python来简化代码.例如:

for client in self.clients.get_all():
        if client.get_id() == id:
            client.set_name(name)
...
Run Code Online (Sandbox Code Playgroud)