如何以不给我错误的方式使用 pygame 导入?

问题描述

我是 Python 新手,所以我为这个问题背后可能的愚蠢而道歉。

我有两个文件正在使用 - File1File2

File1 中,我定义了变量 X,此文件在我的整个游戏中更改了 X 的值,并从 File2 导入特定对象

File2 中,我有一行 from File1 import X,但在该文件中根本没有使用变量。

点击运行会出现一个错误,指出它无法从 File2 导入函数

ImportError: cannot import name 'draw_panel' from partially initialized module 'File2' (most likely due to a circular import)

如果不是像我之前那样从 File1 导入特定对象,而是简单地输入 from File2 import *,那么我的游戏将运行一小段时间,直到产生以下错误

NameError: name 'draw_panel' is not defined

我为这个问题的模糊结构道歉,我愿意接受任何关于导入的替代建议。我只需要能够使用也在第一个文件中更改的变量。

解决方法

您可以将变量从 x 变量 File1 传递给函数,而不是直接从 File2 导入 x

要实现这一点,您需要在 File2 中执行 File1 中的代码,这可以通过在 File2 中设置一个包含所有函数和需要的变量。

举一个非常基本的例子:

class TestClass:
    def __init__(self):
        self.test_variable = 2

    def multiply_test_variable(self,x):
        self.test_variable *= x

然后,在 File1 中导入这个类并从那里运行代码:

from File2 import TestClass

x = 3

test_object = TestClass()

print(test_object.test_variable)
test_object.multiply_test_variable(x)
print(test_object.test_variable)

如果没有您的实际代码,很难解释或给出示例,但我希望这有助于使我的意思更清楚。