我有许多需要拥有数据库连接实例的模块,我希望他们共享相同的实例,而不是创建自己的实例。我目前的做法是在所有模块中显式发送对象实例中的每个函数:
def func(arg1, arg2, database_connection):
pass
当应该有更好的方法导入包含该实例的单独模块时,这变得相当丑陋并且在某种程度上是多余的,但是我不太确定如何保证它实际上是单个实例,而不是多个实例。
也就是说,我正在寻找一种方法来做这样的事情:
import db_module
def func(arg1, arg2):
database_connection = db_module.get_db_instance()
答案 0 :(得分:1)
您所描述的解决方案:
import db_module
def func(arg1, arg2):
database_connection = db_module.get_db_instance()
完全可行,因为Python只导入一次模块。如果执行多个import
语句,它们每个都引用模块的单个实例。
您可以在Python Tutorial和\ n中阅读有关模块和导入的更多信息 Python Language Reference
答案 1 :(得分:0)
db_module.py my_connection = func(x,y)
来自db_module import my_connection