2013-07-18 4 views
1

개체 메서드를 dinamically 호출하고 싶습니다.동적으로 파이썬에서 메서드를 호출하는 방법?

변수 "MethodWanted"에는 실행하려는 메서드가 들어 있고 변수 "ObjectToApply"에는 개체가 들어 있습니다.

MethodWanted=".children()" 

print eval(str(ObjectToApply)+MethodWanted) 

그러나 나는 다음과 같은 오류 얻을 : 내 코드는 지금까지입니다

exception executing script 
    File "<string>", line 1 
    <pos 164243664 childIndex: 6 lvl: 5>.children() 
    ^
SyntaxError: invalid syntax 

가 나는 또한 객체를 포장) (STR없이 시도를하지만 그때 나는 "캔트 사용 + STR과를 얻을 수 및 개체 유형 "오류가 발생했습니다.

하지 dinamically, 난 그냥 할 수있는 경우 :

ObjectToApply.children() 

내가 원하는 결과를 얻을.

어떻게 처리합니까?

답변

7

방법은 속성, 그래서 동적으로 하나를 검색 할 수 getattr()를 사용

MethodWanted = 'children' 

getattr(ObjectToApply, MethodWanted)() 

참고 메서드 이름은 children하지 .children()입니다. 여기에 구문과 이름을 혼동하지 마십시오. getattr()은 메서드 개체를 반환하지만 여전히 호출해야합니다 (jusing ()).

+0

'getattr (sysobj, 'path')'여기서'sysobj'는'sys' 객체입니다. 진짜없이()없이 작동합니다. –

+0

@ManojAwasthi : 그것은'sys.path'가 메소드가 아니기 때문입니다. 당신은'sys.path()'를 결코하지 않을 것이다. –

+0

와우, 정말 고마워. 나는 결국 그것을 놓치고 있었다. (coudlnt 그것이 그렇게 될 것이라고 상상한다) 완벽하게 작동한다! –

관련 문제