2014-10-04 31 views
0

我有一些模塊需要有一個數據庫連接實例,我寧願他們共享同一個實例,也不要自己創建。我現在這樣做的方法是將對象實例明確地發送每一個功能在所有模塊就像這樣:如何在包中的不同模塊之間共享相同的數據庫連接實例?

def func(arg1, arg2, database_connection): 
    pass 

這變得非常醜陋的方式冗餘時,應該有更好的方式來導入包含一個獨立的模塊該實例,但我不太確定如何保證它實際上是一個實例,而不是多個實例。

也就是說,我正在尋找一個方式做這樣的事情:

import db_module 
def func(arg1, arg2): 
    database_connection = db_module.get_db_instance() 
+0

尋找python的單例模式。 – 2014-10-04 17:08:59

回答

1

你所描述的解決方案:

import db_module 
def func(arg1, arg2): 
    database_connection = db_module.get_db_instance() 

是完全可行因爲Python出口每個模塊恰好一次。如果執行多個import語句,則它們每個引用模塊的單個實例。

您可以在Python TutorialPython Language Reference中閱讀更多關於模塊和導入的內容。

+0

從同一包中的不同模塊導入時,這也是如此嗎?這是我最擔心的事情。 – 2014-10-04 18:02:56

+0

是的。無論導入來自*的哪個位置,單個模塊都只實例化一次。 – 2014-10-04 18:09:10

0

這是什麼意思?創建一個導入定義函數的模塊?

db_module.py my_connection = FUNC(X,Y)

從db_module進口my_connection

相關問題