2009-09-30 4 views
9

파이썬 콘솔에서 파이썬 클래스를 사용하는 데 문제가 있습니다. 자동으로 모든 클래스를 전역 네임 스페이스로 가져 와서 어떤 prefix.module.names도없이 사용할 수 있습니다. 여기 Python - 콘솔 클래스 네임 스페이스로 패키지 클래스 가져 오기

projectname/ 
|-__init__.py 
| 
|-main_stuff/ 
    |-__init__.py 
    |-main1.py 
    |-main2.py 
    | 
    |-other_stuff/ 
    |-__init__.py 
    |-other1.py 
    |-other2.py 

각 파일은 같은 이름, 예를 들어, 클래스를 정의 ... 내가 지금까지있어 무엇 main1.py는 Main1이라는 클래스를 정의합니다.

PYTHONPATH은 projectname /의 절대 경로입니다.

나는이 포함 된 파이썬 시작 파일이있어 :

from projectname import * 

을하지만이 날에 내 모든 클래스를 사용하지 않습니다.

ob=Main1() 

을하지만, 메인 1은 현재 이름 공간 내에 있지 않은, 그래서 그것은 작동하지 않습니다 파이썬 콘솔을 시작하면 나는 쓸 수 있도록하고 싶습니다.

import main_stuff 

projectname/main_stuff/__init__.py에서 : 등등

import other_stuff 
__all__ = ["main1", "main2", "main3"] 

나는

projectname/__init__.py에서 ... __init__.py 파일에 가지를 추가했습니다. 그리고 내 시작 파일에 난 덧붙였다 쓰고 난 아직도 가지고있는 파이썬 콘솔 내에서 클래스를 사용하는

from projectname.main_stuff import * 
from projectname.main_stuff/other_stuff import * 

그러나 :

ob=main1.Main1() 

은 내가 main1. 부분이 필요하지 않으려는 것입니다. 누구든지 파이썬 콘솔을 사용할 때 클래스를 전역 네임 스페이스에 자동으로 넣을 수있는 방법을 알고 있습니까?

감사합니다.

는 ==== 편집 ====

내가 필요로하는 클래스 수준에서 패키지를 가져 오는 것입니다

하지만 from package import * 나에게 모듈 수준에서 모든 것을 제공합니다. 나는이 같은 일을하는 쉬운 방법 후 해요 :

for module in package do: 
    from package.module import * 

==== 나는 개별적으로 내 파이썬 시작 파일에 클래스 수입을 추가 결국

ANOTHER 편집 ====. 그것을 유지하는 오버 헤드로 인해 이상적인 것은 아니지만 원하는대로합니다.

from class1.py import Class1 
from class2.py import Class2 
from class3.py import Class3 

답변

16

다른 가져 오기 형식을 사용하고 싶습니다.projectname/main_stuff/__init__.py에서

:

import foo 

당신은 현재 모듈에서 foo라는 이름을 정의 :

from other_stuff import * 
__all__ = ["main1", "main2", "main3"] 

이 같은 문을 사용

. 그런 다음 foo.something을 사용하여 foo에있는 항목을 가져올 수 있습니다.

이 사용

: 당신은 foo는에 정의 된 이름을 모두 복용하고 (모듈에 foo는에서 이름의 버킷을 붓는)이 모듈을 정의하는

from foo import * 

합니다.

+3

+1 "쏟아지는 버킷" –