2016-11-22 1 views
-3

클라이언트 세부 정보를 함수로 업데이트하려고합니다. 그러나 그것은 효과가 없습니다. 나는 프로그램을 디버그하고 그것이 결코 if에 들어간다는 것을 깨달았다. 왜 그런지 몰라? 나는 클라이언트를 업데이트하려고하면for 루프에서 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, cnpadress 제공하지만 인쇄 할 때 목록 아무것도 변경되지 않습니다 :

는 기능입니다. 디버거를 사용하면 if에 들어갈 수 없습니다. 왜?

+2

'self.clients.get_all() [i] .get_id()'? – RomanPerekhrest

+0

어떻게 변경할 수 있습니까? – Mary

+1

'get_id'는 함수처럼 들립니다. 아마도 그것은'.get_id() == id'일까요? –

답변

3

여기에서 문제는 checkget_id == id으로 만들고 있지만 기능입니다.

if self.clients.get_all()[i].get_id()==id: 
#         ^making it a function call 

는 또한,이 작업을 수행하는 더 좋은 방법은 별도의 변수에 self.clients.get_all()를 저장하는 것입니다 :처럼 if가 있어야한다.

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) 
+0

'get_id'는 메소드 호출이어야합니다. 문제는 –

+0

입니다.이 문제는 전혀 문제가되지 않습니다 ... 진실이있을지라도 왜 이것이 올바른 해결책이라고 생각하는지 설명해야합니다. get_all의 무작위 순서에 대한 가정이 잘못되었을 가능성이 있습니다.) –

+0

API에서 무작위로 추측하는 경우 대답 대신 주석을 사용해야합니다. –

5

get_idget_id()과 동일하지 않습니다 : 같은 따라서, 코드가 보일 것입니다. 전자는 메소드를 참조하고, 후자는 메소드를 실제로 호출합니다.

또한 더 관용적 인 Python을 작성하여 코드를 단순화하는 것이 좋습니다. 예 :

for client in self.clients.get_all(): 
     if client.get_id() == id: 
      client.set_name(name) 
... 
관련 문제