가능한 중복 :
Circular (or cyclic) imports in Python사용하여 다시로드() 깰 수입 루프
a.py
import b
class Abstract(object):
pass
class Concrete(Abstract):
def get_newthing(self):
return b.NewThing()
(참고 : 제가 할 것은 어려울 것이다 a.py의 주요 리팩토링)
"수입 B, A"작업을 실행, 작성하지만, 파이썬은 a.py에서 "가져 오기 B"라인에 도달으로 실행 "가져가"
AttributeError: 'module' object has no attribute 'Abstract'
을 제공으로 b.py
import a
#reload(a)
class NewThing(a.Abstract):
pass
가져 오는 동안 b는 아직 생성되지 않은 "a.Abstract"에 액세스하려고 시도합니다.
내가 reload 문을 포함하고 있다면, 파이썬이 a.py 모듈로 점프하고 bazz를 계속하기 전에 Abstract 클래스를 생성하기 때문에 "import a"를 할 수 있습니다. 그래서 그것은 작동하도록 보인다. (아마 재로드를하기 전에 hasattr 검사를 추가해야한다.)
이 가져 오기 루프 문제를 해결할 방법을 찾고 있었으며이 줄에 대한 제안 사항이 없습니다. 이런 식으로 reload()를 사용하는 데 어떤 함정이 있습니까?
[이 질문에 대한 순환 수입] (http://stackoverflow.com/questions/744373/circular-or-cyclic-imports-in-python)을 확인하십시오. –