카테고리 보관물: Python

Python

하나의 파일에 몇 개의 클래스를 넣어야합니까? [닫은]

파일 당 하나의 공개 클래스를 가질 수있는 Java 모델에 익숙합니다. 파이썬에는 이러한 제한이 없으며 클래스를 구성하는 가장 좋은 방법이 무엇인지 궁금합니다.



답변

파이썬 파일을 “모듈”이라고하며 소프트웨어가 “감지”가되도록 구성하는 한 가지 방법입니다. 다른 하나는 “패키지”라고하는 디렉토리입니다.

모듈은 하나 또는 두 개의 밀접하게 관련된 클래스를 가질 수있는 별개의 것입니다. 요령은 모듈을 가져 오는 것이므로 소프트웨어를 읽고 유지 관리하고 확장하는 사람들에게 가져 오기를 완벽하게 이해하는 것이 필요합니다.

규칙은 이것입니다 : 모듈은 재사용 단위입니다 .

단일 클래스를 쉽게 재사용 할 수 없습니다. 어려움없이 모듈을 재사용 할 수 있어야합니다. 라이브러리의 모든 것 (및 다운로드 및 추가 한 것)은 모듈 또는 모듈 패키지입니다.

예를 들어 스프레드 시트를 읽고 계산을 수행하고 결과를 데이터베이스에로드하는 작업을하고 있습니다. 메인 프로그램의 모양은 무엇입니까?

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 문에 대한 순환 의존성도 중요한 역할을합니다. 너무 많은 협력하는 기본 빌딩 블록을 별도의 파일로 분할하려고하면 언어의이 “제한”/ “불완전”으로 인해 그룹화해야 할 것 같습니다. 오히려 합리적인 방법으로.

패키지로 나눌 때, 나는 정말로 모른다. 그러나 아마도 같은 성가심 규칙과 행복한 구조의 출현이 모든 수준의 모듈성에서 작동한다고 말할 것이다.