Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:不同的文件访问同一个类的单个实例,而不是在每个类中创建单独的单个实例 handler.py_Python - Fatal编程技术网

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

Python:不同的文件访问同一个类的单个实例,而不是在每个类中创建单独的单个实例 handler.py,python,Python,obj1=handler.getInstance() obj2=handler.getInstance()#两个对象都对应于类“handler”的同一个实例 如果在两个不同的文件中同时调用getInstance()函数,在每个文件中创建对象,则会创建单独的实例。 但我希望在每个实例中使用相同的单个实例,这样一个程序对该实例所做的任何更改都会反映在同时运行的另一个程序中。 例如: test1.py test2.py 当我同时执行两个文件时,“print“new”语句将执行两次,但我希望只执行一次,

obj1=handler.getInstance()

obj2=handler.getInstance()#两个对象都对应于类“handler”的同一个实例

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

test1.py test2.py 当我同时执行两个文件时,“print“new”语句将执行两次,但我希望只执行一次,以确保只创建类“handler”的单个实例

相关参考资料(这是用Java编写的,我试着用python编写……没有用):


如果希望这些脚本共享一个实例,请使用第三个脚本导入这两个脚本

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

您是如何同时运行这两个不同的文件的?您正在寻找的是单例模式。请参阅简短回答:使用模块级变量,因为它们只导入一次。@Anand:我所说的同时运行的意思是,当第一个文件使用类处理程序的实例连接到数据库时,我在第一个文件中指定的延迟超时之前运行第二个文件,以确保两个文件都在特定时间运行?如果是这样的话,就无法共享实例,因为它们是完全不同的进程,您将不得不使用某种管道机制或类似的机制在它们之间进行通信processes@Kikohs:是的,我正在寻找单例模式,我已经在“handler.py”中实现了它,但这并不能解决我的问题。我试过这样做:在“handler.py”中使变量“\u instance”成为全局变量,并在这两个文件中适当地更改了代码,但它不起作用。这就是你的意思吗?还是我误会你了?。提前谢谢!谢谢你的意见!这是可行的,如果没有其他直接方法存在,我希望在将来实现这一点,目前,这无法实现,因为我的要求不同。:)
import handler

y = handler.handler.getInstance()
maindir
    -->handler.py
    -->test1.py
    -->test2.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