두 개의 모듈, baselib.Database 및 baselib.Application이 있습니다. baselib.Application에서 , 나는 이러한 모듈 중 하나를 가져올 때 문제는, 내가파이썬의 순환 모듈 의존성
AttributeError: 'module' object has no attribute (modulename)
얻을 수있다
import baselib.Database
APP = None
class BaseApplication():
def __init__(dbClass = baselib.Database.GenericDb...):
global APP
this.dbClass = dbClass
APP = this
etc...
이 baselib.Database에서, 나는
import baselib.Application
def getDB(dbClass = baselib.Application.APP.dbClass):
etc...
class GenericDB():
def __init__(self, args):
etc...
을 가지고 있습니다 이 문제는 기본 인수가 가져 오는 동안 평가된다는 사실에서 비롯된 것으로 보입니다. 만약 내가 get12를
def getDB(dbClass = None):
dbClass = dbClass or baselib.Application.APP.dbClass
으로 대체하고 다른 기본 인수를 사용하면 모든 것이 잘 동작합니다. 이 작업을 수행하는 가장 좋고/가장 파이썬적인 방법입니까, 아니면 단순히 순환 의존성을 완전히 피하고 두 모듈을 하나의 파일로 결합해야합니까? 내 코드베이스의 대부분이 그것들에 의존하기 때문에 나는 그것들을 별도로 유지하고 싶다.
게시자가 게시 한 코드 때문에 그 오류가있는 것은 아닙니다. 오류의 전체 스택 추적과 함께 전체 코드를 게시하십시오. –
oops, baselib.Database에 GenericDB 클래스의 선언을 포함하는 것을 잊었습니다. – sfendell
여전히 도움이되지 않습니다. 전체 코드를 게시하십시오. –