2011-10-10 6 views
2

장치ConfigureDevice이라는 클래스가 있다고 가정 해 보겠습니다. 또한 이라는 모듈이 ComPorts (C의 enum)이라는 클래스에서 내 com 포트를 정의하는이라는 모듈을 가지고 있다고 가정 해 보겠습니다.모듈을 가져올 곳

이제 ConfigureDevice의 생성자가 comPorts라는 인수를 사용한다고 가정 해 보겠습니다. 질문 : 장치 모듈의 시작 부분에 가져 오거나 ConfigureDevice 코드를 가져와야이 질문을 가져올 수 있습니까?

# device module 
import serialwriter 
import comports 

class ConfigureDevice: 
    def __init__(self, comPort): 
     self.serialWriter = serialwriter.SerialWriter(comPort) 

을 아니면이 같은 ConfigureDevice를 생성하는 코드를 가져와야합니다 : 당신은 일반적으로 항상에서 import을 넣어해야

import device 
import comports 

... 

device.ConfigureDevice(comports.ComPorts.COM_1) 
+0

[파이썬 가져 오기 코딩 스타일] 가능한 복제본 (http://stackoverflow.com/questions/477096/python-import-coding-style) – DhruvPathak

답변

4

그래서해야 가져 오기 여기에서 발생 부합 할 Python 프로그래머가 기대하는 모듈의 최상위 부분입니다. 왜냐하면 함수가 최종적으로 호출 될 때 나중에 일어나는 대신에 프로그램이 시작될 때 모든 가져 오기 오류가 발생하기 때문입니다. 일반적으로 import은 함수 내에 넣습니다. (a) 잘못 설계된 모듈 중에서 가져 오기 루프를 피하려고하거나 (b) 타사 라이브러리를 선택적으로 만들려고하기 때문입니다. 그 함수를 호출하십시오.

업데이트 : 코드 샘플을 제공해 주셔서 감사합니다. 필자의 초기 조언을 넘어서, import은 항상 파일의 맨 위에 있으며, 내가 볼 수있는 것에서부터 결코 모듈을 사용하지 않기 때문에 장치 모듈에서 comport의 가져 오기를 제거 할 것을 권장 할 수 있습니다. 장치 모듈 코드의 어느 곳에서나 comport 이름을보십시오. 일반적으로 파일에서 import 문을 제거하려고 시도했지만 프로그램이 실행 중이면 처음에는 해당 문이 포함되어 있지 않습니다. pyflakes 프로그램을 사용하면 코드가 발전하면서 더 이상 유용하지 않은 문을 import 찾을 수 있습니다.

+0

감사합니다. Brandon. 내 질문을 명확하게하기 위해 두 가지 예를 추가했습니다. 두 예제 모두 가져 오기가 가장 위에 있지만 올바른 것은 무엇입니까? – Baz

관련 문제