2016-07-06 2 views
0

파이썬에서는 동일한 module 또는 .py file에있는 여러 클래스의 실습이 유행하는 것을 보았습니다. 그러나 다른 클래스가 완전히 다른 패키지를 사용하는 경우 클래스에 대한 import 문을 선택적으로 지정할 수 있습니까?동일한 .py 파일에있는 서로 다른 클래스의 Import 문이 다릅니 까?

다음 (또는 유사 콘텐츠)이 가능합니까?

는 samefile.py : 또한

import foo1 
import foo2 
class one 
     .... 
import foo2 
import foo3 
class two 
     .... 

, 나는 모듈 등 importlib 모듈, imp 모듈을 사용하여 동적으로 수입하지만,이 모듈에 대한 경로의 지식을 필요로 할 수있는 것을보고, 그래서 나는 구역질이 나는거야 그것들을 시험해보기.

내 수업은 밀접한 관련이 있습니다. 이는 동일한 .py file (단순화하기 위해)에 유용하다는 것을 의미합니다. 그러나, 그들은 또한 수입에 의해 완전히 다른 모듈을 사용합니다.

이 방법이 있습니까? 단지 알고 싶다면 그렇게하지 않으면 각 반마다 개인 .py files에 가야합니다.

+0

음, 질문은 무엇입니까? 어떤 코드가 있고 어떤 코드를 갖고 싶습니까? – Jezor

+0

코드를 실행하고 직접 보지 않는 것이 어떨까요? 힌트 : 가능합니다.하지만 모듈 상단에있는 모든 것을 가져올 수도 있습니다 (권장되는 방법입니다). – MisterMiyagi

+0

@MisterMiyagi 나는 해냈다. 그리고 그것은 2 개의 학급 사이에서 수입품 계산서를 diregard하는 것처럼 보였다. 그래서 나는 그것을 할 수있는 또 다른 방법이 있을지도 모른다고 생각한 것입니다. – Brindha

답변

1

이 완벽하게 가능하다 :

import collections 
class Foobar(collections.OrderedDict): 
    pass 

import weakref 
class Barfoo(weakref.WeakKeyDictionary): 
    pass 

가독성를 들어, 파일의 상단에 import의이 should. 그러나 때로는 지연된 가져 오기가 순환 종속성을 피하기 위해 필요할 수 있습니다.

+0

감사합니다. 왜 코드가 작동하지 않는지 다시 살펴 보겠습니다. 또한 다른 곳에서 Barfoo 클래스를 사용하고 있다고 가정한다면 weakref 모듈 만 가져 오거나 콜렉션도 될까요? 죄송합니다. Python을 처음 사용하니 여기에서 길을 잃어 버렸습니다! – Brindha

+1

모듈 만 개별 클래스를 가져올 수 없습니다. 당신이 '그 모듈에서 가져온 Barfoo'를하더라도, 그 'thatmodule'전체가 수입됩니다. 가져 오기는 * 모든 * 클래스 및 함수 정의, 변수 할당, ** 및'import' 문 **을 포함한 모든 최상위 코드를 실행합니다. – MisterMiyagi

관련 문제