2014-10-04 67 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

相关问题