簡體   English   中英

python中的循環模塊依賴性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM