2013-07-05 3 views
0

이것이 "왜 그렇게하고 싶습니까?"라는 질문에 해당하는 것으로 의심됩니다. 하지만 여기에 간다 :Python, 클래스 정의의 모듈 위조

나는 __main__에 정의 된 클래스의 모듈을 위조하는 방법을 찾아야한다. 예 :

<module '__main__' from 'b.py'> 

그럼, 어떻게 :에 b.py 결과를 호출

import inspect 
import a 

class B(object): 
    __name__ = a.__name__ 
    name = "b" 
    pass 

print inspect.getmodule(B) 

:

class A(object): 
    name = "a" 
    pass 

그리고 b.py :

우리가 a.py가 있다고 가정하자 클래스 A의 모듈을 b로 가져 오지 않고 b로 가져 가야합니까?

+0

<여기에 반드시 기입하십시오> –

+0

왜 내가 이것을하고 싶습니까? – dilbert

+1

아니요, "노화 한 체다와 함께 레드 와인이나 화이트를 선호하십니까?" –

답변

0

당신은 클래스의 __module__ 속성을 설정할 수 있지만주의 사항이 있습니다

class A(object): 
    __module__ = 'b' 

주요주의해야 할 점은이 모듈 b는 당신이 getmodule(A)를 호출 할 때 가져 오지 않은 경우 getmodule 없음을 반환하지 발생할 것입니다. b을 비표준 방식으로 가져 오는 경우 패키지의 일부가 아닌 암시 적 상대 가져 오기를 통해 가져 오는 것과 같이 (패키지의 일부인 경우) 문제가 발생할 수 있다고 생각합니다.

개념적으로, 당신이하고있는 일은 다소 모호합니다. A 모듈을 다른 모듈로 설정하는 것은 위험합니다. 실제 모듈이있을 때 해당 모듈을 알지 못하기 때문에 (실제로 가져올 수 없기 때문입니다.) 실제로 "변장"모듈이 존재하지 않을 수도 있습니다.

+0

응답 해 주셔서 감사합니다. 나는 이것이 내 문제의 근본 원인이 아니라는 것을 깨닫는다. – dilbert

관련 문제