2017-01-23 4 views
1

필자가 상속 한 Python (2.7) 코드를 정리하고 제거하려는 원형 가져 오기 시나리오를 발견했습니다. 코드는 현재 (임포트 함수를 악용하여) 실행되지만, 지저분하고 다른 코드가 특정 방식으로 액세스하지 않는 경우 문제가 발생합니다.포장의 순환 종속성 피하기

파일 구조는 기본적으로 이것이다 :

/deep/nested/path/__init__.py 
/deep/nested/path/objects.py 
/deep/nested/path/api.py 

objects

api은/얻을 objects의 인스턴스를 생성하는 기능을 개발자 인터페이스를 공개 데이터 모델의 모음입니다.

일부 objects은 하위 개체를 만들기 위해 api 함수를 호출해야하기 때문에 순환 가져 오기가 발생합니다.

이 코드 섹션은 분석을 처리하고 많은 (많은 객체, 심층 재귀) 실행됩니다. 패키지 네임 스페이스도 상당히 중첩되어 있으므로 패키지 경로를 사용하면 성능에 실질적인 영향을 미칩니다.

objects이 필요로하는 팩토리 기능을 해당 파일로 옮긴 다음 일반적으로 사용하기 위해 api으로 다시 가져오고 싶습니다. 내 문제를 해결하고 점을 없애고 코드 조직을 잃어 버릴 수 있습니다. 나는 또 다른 눈의 세트가 약간의 정보를주기를 바라고있다.

여기에 순환 수입에 대한 몇 가지 질문이 있지만 여기서는 작동하도록하는 데 관심이 없습니다. 나는 점 표기법을 최소화하는 것에 관심이있다. api.factoryobjects.foo이 작동하지만 package.api.factory은 사용하지 않습니다.

답변

0

아마도 이러한 공장 기능을 세 번째 모듈로 옮기는 것이 좋습니다. 그런 다음 objects을 가져 와서 객체를 생성 할 수 있습니다. api 수 필요한 경우 가져 오기; 다른 모듈은 에 무엇이 필요한지 가져올 수 있습니다.