답변:
파이썬 파일을 "모듈"이라고하며 소프트웨어가 "감지"가되도록 구성하는 한 가지 방법입니다. 다른 하나는 "패키지"라고하는 디렉토리입니다.
모듈은 하나 또는 두 개의 밀접하게 관련된 클래스를 가질 수있는 별개의 것입니다. 요령은 모듈을 가져 오는 것이므로 소프트웨어를 읽고 유지 관리하고 확장하는 사람들에게 가져 오기를 완벽하게 이해하는 것이 필요합니다.
규칙은 이것입니다 : 모듈은 재사용 단위입니다 .
단일 클래스를 쉽게 재사용 할 수 없습니다. 어려움없이 모듈을 재사용 할 수 있어야합니다. 라이브러리의 모든 것 (및 다운로드 및 추가 한 것)은 모듈 또는 모듈 패키지입니다.
예를 들어 스프레드 시트를 읽고 계산을 수행하고 결과를 데이터베이스에로드하는 작업을하고 있습니다. 메인 프로그램의 모양은 무엇입니까?
from ssReader import Reader
from theCalcs import ACalc, AnotherCalc
from theDB import Loader
def main( sourceFileName ):
rdr= Reader( sourceFileName )
c1= ACalc( options )
c2= AnotherCalc( options )
ldr= Loader( parameters )
for myObj in rdr.readAll():
c1.thisOp( myObj )
c2.thatOp( myObj )
ldr.laod( myObj )
가져 오기를 개념 또는 청크로 코드를 구성하는 방법으로 생각하십시오. 각 가져 오기에 정확히 몇 개의 클래스가 있는지는 중요하지 않습니다. 중요한 것은 import
진술 과 함께 묘사하는 전체 조직입니다 .
다음과 같은 이유로 Java 모델을 좋아합니다. 각 클래스를 개별 파일에 배치하면 소스 코드를 탐색 할 때 클래스를보다 쉽게 볼 수있어 재사용이 촉진됩니다. 하나의 파일로 그룹화 된 클래스가 많은 경우 다른 디렉토리 에는 프로젝트의 디렉토리 구조를 탐색하여 재사용 할 수있는 클래스가 있음이 분명하지 않을 수 있습니다 . 따라서 클래스를 재사용 할 수 있다고 생각하면 자체 파일에 넣을 것입니다.
그것은 전적으로 프로젝트의 크기, 클래스의 길이, 다른 파일에서 사용될 것인지 등에 달려 있습니다.
예를 들어 데이터 추출을 위해 일련의 클래스를 사용하는 경우가 많으므로 한 줄 길이 ( class SomeData: pass
) 일 수있는 4 개 또는 5 개의 클래스가있을 수 있습니다 .
각 파일을 별도의 파일로 나누는 것은 어리석은 일이지만 다른 파일에서 사용될 수 있으므로 모든 data_model.py
파일을 별도의 파일 에 넣으면 의미가 있습니다.from mypackage.data_model import SomeData, SomeSubData
코드가 많은 클래스가 있거나 일부 함수 만 사용하는 클래스가있는 경우이 클래스와 도우미 함수를 별도의 파일로 분할하는 것이 좋습니다.
당신이 할 수 있도록 당신이 그들을 구조해야 from mypackage.database.schema import MyModel
하지 from mypackage.email.errors import MyDatabaseModel
당신이 만드는 감각에서 물건을 가져 오는 경우 경우 및 파일이 긴, 당신은 제대로 정리하지 수만 줄입니다 -.
파이썬 모듈 설명서 패키지를 조직에 대한 몇 가지 유용한 정보가 있습니다.
파일이 너무 커서 짜증이 나고 관계의 바람직한 구조가 자연스럽게 나타나기 시작하면 나 자신을 분리시킵니다. 이 두 단계는 종종 일치하는 것 같습니다.
완전히 다른 구조의 순서가 필요하다는 것을 깨닫기 시작하기 때문에 물건을 너무 일찍 나누면 매우 성 가실 수 있습니다.
반면에 .java 또는 .py 파일이 약 700 줄 이상에 도달하면 "특정 비트"가 어디에 있는지 기억하려고 끊임없이 화가 나기 시작합니다.
파이썬 / 자이 썬을 사용하면 import 문에 대한 순환 의존성도 중요한 역할을합니다. 너무 많은 협력하는 기본 빌딩 블록을 별도의 파일로 분할하려고하면 언어의이 "제한"/ "불완전"으로 인해 그룹화해야 할 것 같습니다. 오히려 합리적인 방법으로.
패키지로 나눌 때, 나는 정말로 모른다. 그러나 아마도 같은 성가심 규칙과 행복한 구조의 출현이 모든 수준의 모듈성에서 작동한다고 말할 것이다.