2011-11-29 1 views
2

예 : MyClass 내부에 mypkg/submodule.py이 있습니다.패키지를 가져올 때 하위 모듈에서 클래스를 가져 오도록 Python에 어떻게 알릴 수 있습니까?

내가 할 수 있기를 원하는 : 나는 기본 가져 오기이 작업을하기 위해해야 ​​할 일은

import mypkg 
obj = MyClass() 

?

나는 from pkg import *import pkg.submodule 작품 노력하고 있습니다하지만 난 기본 가져 오기의 동작을 변경하고 싶습니다.

이것은 (는) __init__.py__all__과 관련 있습니다.

+2

어떻게 이렇게 할 수 있다면 내가 싫어! 아무도 어디에서 MyClass가 갑자기 나타 났는지 말할 수 없었다. ''pkg import * '가 존재할 정도로 나쁘다. (글쎄, 후자는 대화 형으로 사용하기에 매우 편리합니다.) –

답변

5

정상적으로 수행 할 수 없습니다 (가능한 미친 해킹일지도 모릅니다).

from mypkg.submodule import MyClass 

를 또는 적절 패키지의 설치 __init__.py은, 당신은 할 수있는 경우 : 당신이 중 하나는이

from mypkg import MyClass 
1

그것은 가능하지 않다가, 간단한 파이썬 가져 오기는 현재 네임 스페이스에 모듈을 추가합니다 .

지금 MyClass를 가져 오기위한 3 개 대안이 있습니다

# mypkg/__init__.py 
from submodule import MyClass 
__all__ = ["MyClass"] 

# mypkg/submodule.py 
def MyClass(obj): 
    pass 

# test-usage.py 
import mypkg 
mypkg.MyClass() 

# test-usage-2.py 
from mypkg import MyClass 
MyClass() 

# test-usage-3.py 
from mypkg import * 
MyClass() 
+3

당신은 정교 할 수 있습니까? 이 질문에 대한 대답이 있습니까? –

관련 문제