여러 파일에 걸쳐 구성된 Python 클래스를 사용할 수 있습니까?
파일당 하나의 공용 클래스를 가질 수 있는 Java 모델에 익숙합니다.Python에는 이러한 제한이 없고, 어떻게 하면 수업을 정리할 수 있는지 궁금합니다.
Python 파일은 "모듈"이라고 불리며, 소프트웨어를 "이해"하도록 구성하는 한 가지 방법입니다.다른 하나는 "패키지"라고 불리는 디렉토리입니다.
모듈이란 밀접하게 관련된 클래스가1개 또는 20개 있는 별개의 것입니다.중요한 것은 모듈을 Import하는 것입니다.그 Import를 통해 소프트웨어를 읽고 유지 보수하며 확장해 주는 사용자에게 완벽하게 대응할 수 있어야 합니다.
규칙은 다음과 같습니다. 모듈은 재사용 단위입니다.
단일 클래스를 쉽게 재사용할 수 없습니다.모듈을 쉽게 재사용할 수 있어야 합니다.라이브러리의 모든 것(및 다운로드 및 추가하는 모든 것)은 모듈 또는 모듈 패키지입니다.
예를 들어 스프레드시트를 읽고 계산을 수행한 후 결과를 데이터베이스에 로드하는 작업을 수행한다고 가정합니다.메인 프로그램이 어떻게 생겼으면 좋겠어요?
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하다【수입하다한 것은 지금 있는 입니다.import
★★★★★★★★★★★★★★★★★★.
인위적인 제한이 없기 때문에, 무엇을 이해하느냐에 따라 다릅니다.논리적으로 정리된 꽤 짧고 간단한 수업들이 많이 있다면, 그것들을 많이 던져라.크고 복잡한 클래스가 있거나 그룹으로 의미가 없는 클래스가 있는 경우 클래스당 1개의 파일로 이동합니다.아니면 그 사이에 있는 걸 고르거나.상황이 변함에 따라 리팩터.
저는 다음과 같은 이유로 자바 모델을 좋아하게 되었습니다.각 클래스를 개별 파일에 배치하면 소스 코드를 검색할 때 클래스를 더 쉽게 볼 수 있으므로 재사용이 촉진됩니다.여러 개의 클래스가 하나의 파일로 그룹화되어 있는 경우, 프로젝트의 디렉토리 구조를 참조하는 것만으로 재사용할 수 있는 클래스가 있다는 것은 다른 개발자에게 분명하지 않을 수 있습니다.따라서 당신의 클래스가 재사용이 가능하다고 생각되면 해당 파일에 저장하겠습니다.
프로젝트의 규모, 클래스의 길이, 다른 파일의 사용 여부에 따라 달라집니다.
예를 들어 데이터 추출을 위해 일련의 클래스를 사용하는 경우가 많기 때문에 한 줄에 불과한 클래스가 4개 또는 5개 있을 수 있습니다(class SomeData: pass
).
각 파일을 다른 파일로 분할하는 것은 어리석은 일이지만 다른 파일에서 사용할 수 있기 때문에 이 모든 것을 다른 파일에 넣습니다.data_model.py
파일이 말이 되므로from mypackage.data_model import SomeData, SomeSubData
코드가 많은 클래스가 있는 경우, 일부 함수만 사용하는 경우 이 클래스와 도우미 함수를 별도의 파일로 분할하는 것이 좋습니다.
구조화해야 합니다.from mypackage.database.schema import MyModel
,것은 아니다.from mypackage.email.errors import MyDatabaseModel
- Import처에서의 파일 길이가 수만 행이 아니라면 올바르게 정리한 것입니다.
Python Modules 문서에는 패키지 구성에 대한 유용한 정보가 포함되어 있습니다.
파일의 거대함에 짜증이 나거나 자연스럽게 관련성이라는 바람직한 구조가 나타나기 시작할 때 나는 사물을 쪼개버리는 것을 발견한다.종종 이 두 단계가 일치하는 것처럼 보인다.
너무 일찍 분할하면 전혀 다른 순서가 필요하다는 것을 깨닫기 때문에 매우 짜증날 수 있습니다.
한편, .java 또는 .py 파일이 약 700 행이 넘으면, 「그 특정의 비트」가 어디에 있는지 기억하려고 하면, 항상 짜증이 나기 시작합니다.
Python/Jython의 import 스테이트먼트의 순환 의존관계도 작용하고 있는 것 같습니다.만약 당신이 너무 많은 협력하는 기본 구성 요소를 다른 파일로 분할하려고 한다면, 이 언어의 "제한"/"불완전성"은 당신이 사물을 그룹화하도록 강요하는 것 같습니다. 아마도 합리적인 방법으로.
패키지로 분할하는 것에 대해서는 잘 모르겠습니다만, 아마 모든 레벨의 모듈화에서는, 귀찮음과 행복 구조의 출현에 관한 같은 룰이 유효하다고 말할 수 있습니다.
너무 크고 복잡하게 만들지 말고 논리적으로 그룹화할 수 있는 만큼의 클래스를 파일에 넣어야 합니다.
언급URL : https://stackoverflow.com/questions/106896/possibilities-for-python-classes-organized-across-files
'sourcecode' 카테고리의 다른 글
MySQL에서 테이블 이름이 변수인 경우 선택하는 방법 (0) | 2022.09.22 |
---|---|
String.replace모든 단일 백슬래시를 이중 백슬래시로 바꿉니다. (0) | 2022.09.22 |
SpringBoot2 구성 JUQ MariaDB: "javax.sql 유형의 빈이 필요했습니다.DataSource'를 찾을 수 없습니다." (0) | 2022.09.22 |
변수 앞에 더하기 기호가 있는 목적은 무엇입니까? (0) | 2022.09.22 |
MySQL에서 날짜 범위의 중복 확인 (0) | 2022.09.22 |