当前位置: 首页 > 面试题库 >

Python中的循环依赖

莘俊能
2023-03-14
问题内容

我有两个文件node.pypath.py,分别定义了两个类NodePath

直到今天,用于Path引用该Node对象的定义,因此我已经做了

from node.py import *

path.py文件中。

但是,到目前为止,我已经为Node引用该Path对象的对象创建了一个新方法。

尝试导入时遇到了问题path.py:我尝试了一下,当程序运行并调用了using的Path方法时Node,出现了一个Node未定义的异常。

我该怎么办?


问题答案:

导入Python模块
是一篇很棒的文章,介绍了Python中的循环导入。

解决此问题的最简单方法是将路径导入移动到节点模块的末尾。



 类似资料:
  • 问题内容: 假设我具有以下目录结构: 在软件包的中,将导入软件包。但是进口。 程序失败,表示尝试导入b时不存在。(它实际上不存在,因为我们正在导入它。)`c_file.pya.b.d `如何解决这个问题? 问题答案: 如果a取决于c,而c取决于a,那么它们实际上不是同一单位吗? 您应该真正检查一下为什么将a和c拆分为两个包,因为您应该将一些代码拆分为另一个包(以使它们都依赖于该新包,而不是彼此依赖

  • 问题内容: 我已经搜索了很多,但是我发现的主要是python中的递归编程示例。因此,问题来了: 我该如何实现? 问题答案: 一切在Python中都是动态的-甚至是类声明。在初始声明之后,没有什么可以阻止您修改类的内容的: 注意:如果您不太熟悉Python,则该关键字仅允许您说“这里什么都没有”-除非A类的空值与本例中的一样空,否则它并不重要!

  • 问题内容: 我有以下课程。 和 可以清楚地看到,这些类之间存在循环依赖关系。如果尝试运行A类,最终会得到。 如果创建了一个依赖图,其中节点是类,则可以轻松地识别这种依赖关系(至少对于节点很少的图)。那么,为什么JVM至少在运行时无法识别此身份?JVM至少可以在开始执行之前发出警告,而不是抛出。 [更新] 某些语言不能具有循环依赖关系,因为这样就无法构建源代码。和可接受的答案。如果循环依赖性是C#的

  • 问题内容: 如果两个模块相互导入会怎样? 为了概括这个问题,Python中的循环导入又如何呢? 问题答案: 导入确实非常简单。只要记住以下几点: 和是可执行语句。它们在运行的程序到达该行时执行。 如果模块不在中,则导入将在中创建新的模块条目,然后在模块中执行代码。在执行完成之前,它不会将控制权返回给调用模块。 如果中确实存在一个模块,则无论导入是否完成执行,导入都会简单地返回该模块。这就是循环导入

  • 问题内容: 再次出现这种情况时,我到处乱跑,我快要疯了。 我希望Python首先会分析所有文件,以便它从一开始就知道所有标识符(我认为就像Java一样)。 我有一个“ main.py”和一个“ gui.py”。每个文件都包含一个类,该类使用另一个文件中的类。当我尝试运行“ main.py”时,解释器导入“ gui”,然后在“ gui.py”中导入“ main”,然后处理整个main模块,并说:“

  • 问题内容: 对于以下代码: 输出为:X = 1,Y = 2 为什么?如何??? -伊瓦尔 PS:摘自JavaCamp.org的代码段 问题答案: 以下是按时间顺序发生的情况: 类包含主方法,因此它由类加载器加载。 引用的初始化,因此类被加载。 有一个初始化为的静态变量。 的初始化尚未执行,因此求值为0,因此将1分配给 现在已经完成加载,并且可以初始化。 值(1 +1)被分配给。 的值和被打印为和分