Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.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:全局重新加载模块_Python_Python Import - Fatal编程技术网

python:全局重新加载模块

python:全局重新加载模块,python,python-import,Python,Python Import,我正在制作一个pygame对话框,我有如下文件: window.py: class Window(): def set_size(self, size): self.size = size main_window = Window() dialogs.py: from window import main_window class Question(): def __init__(self): # lots of initializing

我正在制作一个pygame对话框,我有如下文件:

window.py:

class Window():
    def set_size(self, size):
        self.size = size

main_window = Window()
dialogs.py:

from window import main_window
class Question():
    def __init__(self):
        # lots of initializing
        self.position = (main_window.size[0] / 2, main_window.size[1] / 2) # centering dialog

question = Question()
其他文件:

from window import main_window
from dialogs import question

# do something
问题是,如果我在其他文件中更改主窗口的大小,那么问题对话框将不再居中,因为问题已经用不同的屏幕大小初始化。因此,我想让set_size方法为所有其他文件重新加载问题模块。我该怎么做


谢谢

为什么不将
位置
作为一个属性,根据当前
主窗口的大小重新计算?重新加载
窗口
不会有任何帮助,因为该属性已被永久设置。它可能是一个属性,实际上是我的原始代码中的一个属性,但没有任何区别。我想重新加载
question
对话框来修复
self.position
而不是
窗口
您的模型似乎有点坏了。为什么直接在它们的模块中创建实例?为什么不创建一个明确引用
窗口的
问题
实例
<代码>问题=问题(主窗口)
?我只需要一个所有模块都可以轻松访问的窗口。我使用一个对话框使初始化代码只执行一次。这可能是一个错误的选择,但我宁愿现在避免更改所有内容。为什么不将
位置
作为一个属性,根据当前的
主窗口重新计算。大小
?重新加载
窗口
不会有任何帮助,因为该属性已被永久设置。它可能是一个属性,实际上是我的原始代码中的一个属性,但没有任何区别。我想重新加载
question
对话框来修复
self.position
而不是
窗口
您的模型似乎有点坏了。为什么直接在它们的模块中创建实例?为什么不创建一个明确引用
窗口的
问题
实例
<代码>问题=问题(主窗口)?我只需要一个所有模块都可以轻松访问的窗口。我使用一个对话框使初始化代码只执行一次。这可能是一个错误的选择,但我宁愿现在避免改变一切。