我有两个模块,baselib.Database 和 baselib.Application。在 baselib.Application 中,我有
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...
问题是,当我导入这些模块中的任何一个时,我得到
AttributeError: 'module' object has no attribute (modulename)
问题似乎源于在导入期间评估默认参数的事实。如果我将 getDB 替换为
def getDB(dbClass = None):
dbClass = dbClass or baselib.Application.APP.dbClass
并对另一个默认参数做同样的事情,一切正常。这是执行此操作的最佳/最 Pythonic 方式,还是我应该完全避免循环依赖并将两个模块组合到一个文件中?我真的很想将它们分开,因为我的大部分代码库都依赖于它们。