2012-03-13 1 views
0

나는 파이썬에서 정의 안에있는 메소드의 사전을 가지고있다. 이 def은 개체를 사용하여 클래스 외부에서 호출됩니다. def이 호출 될 때마다 나는 사전의 마지막 항목의 결과를 반환합니다. 이 경우 나는 def spc_summary:의 결과를 반환합니다.파이썬에서 사전 값을 검색하는 방법은 무엇입니까?

def setStyles(self): 
    # Assign function to file 
    functions = { 
      'app_server.php':self.app_server(), 
      'dcrm2nlyte.php':self.dcrm2nlyte(), 
      'export.php':self.export(), 
      'host_server.php':self.host_server(), 
      'spc.php':self.spc(), 
      'spc_approved.php':self.spc_approved(), 
      'spc_approved_by_dc.php':self.spc_approved_by_dc(), 
      'spc_by_dc.php':self.spc_by_dc(), 
      'spc_complete.php':self.spc_complete(), 
      'spc_summary.php':self.spc_summary() 
    } 

    filename = self.phpfile 
    functions.get(filename) 

누군가 여기서 일어날 일을 설명해 주시겠습니까? 자세한 내용이 필요한 경우 알려주십시오. 감사!

세부 사항을 추가하겠습니다. functions.get(filename)은 파일 이름이 무엇인지에 관계없이 마지막 사전 항목을 검색합니다. 나는 이것을했는데 =>functions('spc.php')이고 여전히`def spc_summary '에 대한 결과를 반환했다. 그리고 그 def의 것이 같은 결과를 가져서는 안됩니다.

+0

'function' 사전의 목적은 무엇입니까? 이름이'phpfile' 안에 저장된 함수를 호출하려고합니까? – hochl

+5

''spc_summary.php ': self.spc_summary()'줄에는''spc_summary.php': self.spc_summary'와''function.get (filename)''과 같은 괄호가 없어야합니다. 여러분은''functions.get (filename)()' –

+0

네, 각 메소드 호출 **에서 사전을 구성하는 동안 효과적으로 모든 멤버 함수를 호출하고 있습니다. – hochl

답변

2

귀하의 기능 dict 잘못하고있는 것 같습니다. 당신의 dict를 정의하는 동안 함수 객체 대신에 키를 함수 결과에 매핑합니다. 이 기능을 객체 함수에 매핑 경우 functions.get(filename)()

당신의 DICT 아마 다음과 같이해야 호출 할 때 호출됩니다 :

functions = { 
     'app_server.php':self.app_server, 
     'dcrm2nlyte.php':self.dcrm2nlyte, 
     'export.php':self.export, 
     'host_server.php':self.host_server, 
     'spc.php':self.spc, 
     'spc_approved.php':self.spc_approved, 
     'spc_approved_by_dc.php':self.spc_approved_by_dc, 
     'spc_by_dc.php':self.spc_by_dc, 
     'spc_complete.php':self.spc_complete, 
     'spc_summary.php':self.spc_summary 
} 
0

사전이 정렬되지 않은, 그래서 마지막 개체가 딕셔너리 반복에서 반환 된 것 아마도 그 사전에 삽입 된 마지막 항목이 아닐 것입니다.

functions.get(filename)은 현재 값인 filename을 가져다가 functions에서 찾으려고합니다. filenameself.phpfile에서 값을 가져 오므로 self.phpfile은 'spc_summary.php'로 설정해야합니다.