Python:访问类的单个实例的不同文件,而不是在每个实例中创建单独的单个实例

时间:2015-06-23 09:18:41

标签: python

handler.py

class handler:

    cursor = None
    _instance= None
    db = MySQLdb.connect("localhost","root","root","db" )
    count=0

    @staticmethod
    def getInstance():
        if(handler._instance == None):
            handler._instance = handler()
            print "new"
        return handler._instance

    def __init__(self):
        handler.cursor = handler.db.cursor()
        print "ok"

obj1 = handler.getInstance()

obj2 = handler.getInstance()#两个对象对应于类'handler'的同一单个实例。

如果在两个不同的文件同时中调用getInstance()函数来在每个文件中创建对象..它会创建单独的单个实例。 但我希望在每个实例中使用相同的单个实例,以便一个程序对该实例所做的任何更改都会反映在同时运行的其他程序中。 例如:

test1.py

import handler
import time
x = handler.handler.getInstance()

time.sleep(20)

test2.py

import handler

y = handler.handler.getInstance()

当我同时执行两个文件时,'print“new”'语句被执行两次,但我希望它只执行一次,以确保只创建一个类'handler'的单个实例。

相关引用(这是在Java中,我试图在python中做....不起作用):

Creating one instance of an object and using the same instance in different class files

1 个答案:

答案 0 :(得分:0)

如果您希望这些脚本共享一个实例,那么让第三个脚本导入这两个脚本

maindir
    -->handler.py
    -->test1.py
    -->test2.py
    -->main.py

main.py

import handler
import test1, test2
x = handler.handler.getInstance()

#perform operations of test1

y = handler.handler.getInstance()
#this time handler already has already instantiated so it wont print new
#performOperations of test2