我正在尝试使用函数更新客户端详细信息。但它不起作用。我调试程序,我意识到它永远不会进入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)
当我尝试更新客户端时,我会提供id
,name
,cnp
和adress
,但是当我打印列表时,没有任何更改。我无法使用调试器进入if
,因为它说它们永远不会相等。为什么呢?
答案 0 :(得分:5)
请注意,get_id
与get_id()
不同。前者引用该方法,而后者实际上称之为。
此外,请考虑通过编写更多惯用的Python来简化代码。例如:
for client in self.clients.get_all():
if client.get_id() == id:
client.set_name(name)
...
答案 1 :(得分:3)
这里的问题是你将check
作为get_id == id
,但这是一个功能。您的if
应该是:
if self.clients.get_all()[i].get_id()==id:
# ^ making it a function call
此外,更好的方法是将self.clients.get_all()
存储在单独的变量中。因此,您的代码应如下所示:
def UpdateClient(self,id,cnp,name,adress):
clients = self.clients.get_all()
for i in range (len(clients)):
if clients[i].get_id()==id:
clients[i].set_name(name)
clients[i].set_cnp(cnp)
clients[i].set_adress(adress)