我有两个模块,baselib.数据库以及基本库应用程序. 在基本库应用程序,我有
import baselib.Database
APP = None
class BaseApplication():
def __init__(dbClass = baselib.Database.GenericDb...):
global APP
this.dbClass = dbClass
APP = this
etc...
在baselib.数据库,我有
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
对另一个默认参数做同样的处理,一切正常。这是最好的/最具python风格的方法吗,还是我应该完全避免循环依赖并将两个模块合并到一个文件中?我真的很想把它们分开,因为我的代码库很大一部分依赖于它们。你知道吗
我想这个http://effbot.org/zone/import-confusion.htm#circular-imports可以回答你的问题。基本上,进口也是一种声明。我们应该避免循环模块依赖。你知道吗
相关问题 更多 >
编程相关推荐