[英]Circular module dependency in python
我有兩個模塊,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方式,還是應該完全避免循環依賴並將兩個模塊合並為一個文件? 我真的很想將它們分開,因為我的代碼庫很大一部分都依賴於它們。
我認為這個http://effbot.org/zone/import-confusion.htm#circular-imports可能會回答您的問題。 基本上,導入也是一個聲明。 我們應該避免循環模塊依賴性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.