2013-12-11 4 views
2
from foo import fooClass 

dict = {'a': method1, 'b': method2} 

bar = fooClass() 

method = dict['a'] 

bar.method() 

메서드에 대한 참조가있는 사전을 정의하려고하지만 메서드 정의가 사전 정의 범위에 없습니다.Python - 외부 클래스의 메서드 정의가있는 사전에 메서드 이름 선언

현재 NameError : name 'method1'이 정의되지 않았습니다.

명확히하기 위해 함수가 정의 된 예제를 보았습니다. 그런 다음 함수 이름을 사용하는 사전이 동일한 범위에서 만들어졌지만 이것이 내가 원하는 것과 다릅니다.

답변

3

당신은 실제 방법으로 사전을 가리 키도록해야 그 범위에 정의되지되어

from foo import fooClass 

dict = {'a': fooClass.method1, 'b': fooClass.method2} 

method1 때문에, 당신은 fooClass 클래스에 메소드를 참조 할 필요가있다. 코드에서 fooClass를 referening 유지하고 싶지 않은 경우


또는, 당신은 문자열로 방법을 저장하고이에 할 getattr()을 사용할 수

from foo import fooClass 

dict = {'a': 'method1', 'b': 'method2'} 

bar = fooClass() 
method = getattr(bar.__class__, method = dict['a']) 
bar.method() 
+0

덕분에, 완벽하게 일했다. 나는 클래스의 인스턴스를 정의하는 것을 고려했다. 그렇지만 그것을 전달해야하고 더 좋은 방법이 있어야한다고 생각했다. 완벽한 대답! – spottedzebra

+0

@ user3089611 초록색 눈금을 클릭하여이 답변을 수락하면 다른 사용자가 답변을 검색 할 때 해당 질문에 대해 대답 할 수 있음을 나타낼 수 있습니다. –

+0

고마워, 또. 나는 꽤 잠시 동안 stackexchange에 대해 읽었으며 이것이 나의 첫 번째 게시물이라고 생각한다. – spottedzebra

관련 문제