在 Python 中导入的问题

先科

我正在尝试创建一个需要来自主类的变量的模块,所以我将所述变量导入到模块中,但是当我尝试通过将它导入主类来测试我的新模块时,它说它无法导入它.

似乎是因为我正在导致问题的新模块中导入主类,因为每当我删除导入时,它都可以工作,但它无法再访问主类中运行所需的变量。

主要类:

from Mod import Mod

variable1=5
variable2=3

mod=Mod()

mod.task()

新模块:

from Main import variable1, variable2

class Mod:
    def task(self):
        print(variable1+variable2)

当我运行主类时,我得到了这个:

Traceback (most recent call last):
  File "D:\.here\Computer Science\Computer Science Stuff\Python Projects\Main.py", line 1, in <module>
    from Mod import Mod
  File "D:\.here\Computer Science\Computer Science Stuff\Python Projects\Mod.py", line 1, in <module>
    from Main import variable1, variable2
  File "D:\.here\Computer Science\Computer Science Stuff\Python Projects\Main.py", line 1, in <module>
    from Mod import Mod
ImportError: cannot import name 'Mod' from 'Mod' (D:\.here\Computer Science\Computer Science Stuff\Python Projects\Mod.py)

当我运行新模块时,我得到了这个:

Traceback (most recent call last):
  File "D:\.here\Computer Science\Computer Science Stuff\Python Projects\Mod.py", line 1, in <module>
    from Main import variable1, variable2
  File "D:\.here\Computer Science\Computer Science Stuff\Python Projects\Main.py", line 1, in <module>
    from Mod import Mod
  File "D:\.here\Computer Science\Computer Science Stuff\Python Projects\Mod.py", line 1, in <module>
    from Main import variable1, variable2
ImportError: cannot import name 'variable1' from 'Main' (D:\.here\Computer Science\Computer Science Stuff\Python Projects\Main.py)

我不知道为什么会发生这种情况。它与我在 Java 中所做的事情相矛盾。

如果不通过导入,我如何能够引用存储在主类中的全局变量?

碰撞

您的问题在这里称为“循环依赖”。Main.py 试图从 Mod.py 导入一个类,但在此之前,Mod 必须从 Main.py 导入一些变量,但在此之前...

通常,解决循环依赖的方法是重新组织程序的布局方式。例如,您可以将 Mod 参数化,使其不再依赖于 Main。例如:

主要.py:

from Mod import Mod

variable1=5
variable2=3

mod=Mod()

mod.task(variable1, variable2)

模块.py:

class Mod:
    def task(self, a, b):
        print(a + b)

或者,您可以将variable1存储variable2在不同的文件中。寻找最佳解决方案将取决于什么对您的程序最有意义。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章