1

다른 구조로 파이썬 응용 프로그램을 구성하려고합니다. 원형 종속성으로 인해 가장 자연스러운 글꼴이 작동하지 않습니다. 조직의 목표는 클래스를 자체 파일로 이동하고 모듈을 자신의 __init__.py에 의해 제어하도록하는 것입니다.모듈로 파이썬 코드 구성하기?

어쨌든 코드를 참조하십시오. 이 구조를 가진 앱을 가지고 있습니다.

/app 
    |__ user 
    | |__ __init__.py 
    | |__ user_dao 
    | |__ user_dto 
    | |__ user_record 
    | 
    |_app.py 

/app/user/__init__.py 다음과 같이 보입니다.

from user_dao import UserDAO 
from user_dto import UserDTO 
from user_record import UserRecord 

및 모든 사용자 오브젝트는 "종속" ->에 등가 인 liniar 객체 그래프 UserDTO -> UserDAO -> UserRecord 서로에 의존한다.

앱은 내가 순환 종속성을 가리키는 스택 추적에 오류

ImportError UserDAO 

를 얻을 실행하려고 할 때 마지막으로 app.py에서

from user import UserDAO 
from user import UserDTO 

비슷한이

. Python에서 비슷한 코드를 구성하는 더 좋은 방법은 모듈이 작동하도록 모든 클래스를 같은 파일에 넣는 것입니다.

파이썬의 응용 프로그램 디자인에 대한 제안은 도움이되며 고맙습니다.

+1

'from user.userdao import UserDao'가 아니어야합니까? – arynhard

+0

이 코드를 사용해 본 결과 나에게 아무런 문제가 없으며 ImportError도 아닙니다. 나는 파이썬 2.6.6을 사용했다. – Alexis

+0

파이썬 2.7.3과 함께 윈도우에서 오류없이 테스트되었다. – Alexis

답변

0

내가 정확히 user_*.py 파일을 작성하는 방법에 따라 오류가 발생한다고 생각합니다. 만약 그들이 from user import UserDAO이라고 말하면, 그들은 실행을 마친 __init__.py의 코드에 순환 적으로 의존합니다. 이를 피하려면 명시 적으로 from user.user_dao import UserDAO이라고 말해야합니다.

관련 문제