동적

2009-10-25 4 views
8

우리의 프레임 워크는 못생긴 상용구 코드에서 특정 기능을 포장해야하는 파이썬 모듈에 기능을 추가 모듈 수준에서 함수 이름의 특정 패턴을 찾기 때문에 프레임 워크가 다소 까다로울 수 있습니다.동적

나는 아무 소용는 데코레이터에서 다음을 시도했다 :

current_module = __import__(__name__) 
new_name = prefix + func.__name__ + suffix 
# method A 
current_module[new_name] = func 
# method B 
func.__name__ = new_name 
current_module += func 

어떤 도움을 주시면 감사하겠습니다!

+1

프레임 워크가이 이름에서 무엇을 어떻게 보이는지 좀 더 철저하게 설명해야합니다. 아마도 __getattr__을 오버라이드하거나 모듈 자체의 사전을 위조하여 위조 할 수 있지만이 시점에서는 확실하게 말할 수는 없습니다. –

+0

저는 프레임 워크가 정확히 무엇을 하는지를 솔직히 모릅니다. Oren의 작은 알림은 내가 필요한 것입니다. – AnC

답변

13

사용 중

current_module.new_name = func 

또는

setattr(current_module, new_name, func) 
+0

물론 Duh, - 내가 생각했던 것은 ... 고마워! – AnC

0

이 문제에 대한 해결책은 원래의 함수로 장식 기능의 역할을하는 것 같다.

은 여기 트위스트에서 기능 mergeFunctionMetadata를 사용해보십시오 : twisted/python/util.py

그것은 희망 프레임 워크를 픽업하고, 원래로 장식 기능 역할을합니다.

+0

감사합니다. 흥미로운 것처럼 보입니다.이 방법을 가장 효과적으로 적용해야합니다. – AnC