2017-12-10 1 views
1

this과 비슷한 클래스 구조의 패키지가 있습니다. Base 클래스는 몇 가지 별도의 계층 구조에 대한 일반적이고 간단한 상위 클래스입니다.클래스 정의를 __init__.py에 넣을 수 있습니까?

내 패키지 레이아웃은 다음과 같습니다

__init__.py (empty) 
base.py 
ab.py 
cd.py 
ef.py 

이것은 단지 하나 개의 클래스에 대해 별도의 모듈을 만드는 대신 __init__.pyBase 클래스를 넣어 좋은 아이디어 나 좋은 방법인가? 이런 식으로 모듈마다 매번 가져올 필요가 없습니다.

+1

나는 base.py에두고 싶지만''base import base'를'__init __. py'에 쓰면 * my_package *에서''my_package import Base'처럼''Base''를 직접 가져올 수 있습니다. – jojo

+0

글쎄,이게 가장 좋은 해결책 같아. 감사! – maln0ir

+0

당신은 환영합니다! 짧은 경우에도 답변으로 넣을 것입니다 :) – jojo

답변

2

base.py에 그대로 두는 것이 더 좋고 유연한 방법입니다. __init__.py의 기본 용도는 파이썬 패키지을 초기화하고 내용을 보유하지 않는 것입니다.

# some script 
from my_package import Base 

이 공통 입니다 :

하면 직접 my_package에서 Base를 가져올 수있는 모듈을 당신이 __init__.py 등으로

# in __init__.py 
from base import Base 

같은 것을 쓸 수 있습니다 때마다 가져 오는 것을 방지하려면 패키지 레벨에서 객체를 사용할 수있게 만드는 접근법.

__init__.py 파일에 대한 자세한 내용은 documentation을 확인하십시오.

관련 문제