2014-01-08 2 views
0

나는이 같은 구문을 사용하여 파이썬 모듈을 가져 오는 경우 : 그것의 위치 모듈이, 무엇의 아이디어를 얻을 나중에 간단한 명령의 번호를 사용할 수 있습니다파이썬 네임 스페이스 및 모듈

import my_module 

및 예를 들어, 등 :

print(my_module) 

출력 : 모듈 'my_module.py'

dir(my_module) 

출력으로부터 'my_module': 'MyCla SS ','내장 명령 ','문서 ','파일 ','이름 ','패키지 ','수학 ','OS ','SYS ']

I

print os.path.abspath(my_module.__file__ ) 

출력 : 심지어 사용하여 모듈의 절대 경로를 찾을 수 있습니다 /Users/julia/Documents/classes/my_module.py

을하지만 경우 대신 수입 'my_module'의 나는 것 사용 수 :

from my_module import MyClass 

내가 할 수있는 모두가하는 것입니다 my_module.MyClass

내가 MyClass에이 my_module 파일에서 온 보는가 : 출력

print MyClass 

. 하지만 불행하게도 모듈에 대한 정보를 얻기 위해 사용했던 명령이 작동하지 않기 때문에 내가 얻을 수있는 전부입니다. 여기에 사용하고 자신의 출력 :

print dir(my_module.MyClass) NameError: name 'my_module' is not defined 

print dir(my_module) NameError: name 'my_module' is not defined 

print my_module name 'my_module' is not defined 

어떤 명령 (-s)

from my_module import MyClass 

구문을 가져 가져온 모듈을 추적하는 동안 사용되어야 하는가?

+1

허 : 대신이 모듈에서 가져온 클래스를 통해 그것을 얻을 같은 (클래스의 모듈 ATTR 사용)? 질문이 뭐야? MyClass를 가져온 경우 ... 해당 클래스를 가져온 경우에만 ... –

+0

이 작업이 저에게 효과적입니다. 아마도 그 모듈을 전혀 가져 오지 않고 그 세부 사항을 출력하려고합니다. – mojibuntu

답변

1

문제는

from my_module import MyClass 

은 MyClass의 전체가 아닌 모듈을 수입한다는 것입니다. 당신이에서 수입 된 모듈 MyClass의 이름을 알고 싶다면

, 당신은 사용할 수 있습니다

print MyClass.__module__ 

를 당신이 사용할 수있는 동일한 모듈에서 다른 물건을 사용하려면 :

my_module = __import__(MyClass.__module__) 
print dir(my_module) 

하지만 그냥 쓸 훨씬 더 쉬울 것이다 :

import my_module 
0

감사 Mr.Crash!직접 이름을 사용하여 모듈을 호출하지 않는

from my_module import MyClass 

: 모듈을 사용하여 가져온 경우

: 다음은 요약입니다.

print dir(MyClass.__module__) 
print os.path.abspath(MyClass.__module__)