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

处理Python模块中的循环依赖关系?

哈雅珺
2023-03-14
问题内容

再次出现这种情况时,我到处乱跑,我快要疯了。

我希望Python首先会html" target="_blank">分析所有文件,以便它从一开始就知道所有标识符(我认为就像Java一样)。

我有一个“ main.py”和一个“ gui.py”。每个文件都包含一个类,该类使用另一个文件中的类。当我尝试运行“ main.py”时,解释器导入“
gui”,然后在“ gui.py”中导入“ main”,然后处理整个main模块,并说:“ Tee-hee,没有任何类在gui.py中具有给定名称。”

如何 以最小的麻烦 处理Python中的循环依赖关系?


问题答案:

我以为可以将其扩展为答案而不是评论。

在python中有解决此问题的方法:

  • 不错的选择:重构代码,不要使用循环导入。
  • 糟糕的选择:将您的一条import语句移到另一个作用域。

但是,不能,您不能预解析文件。这不是Python的工作方式,而且如果您研究Python的工作方式,那么原因很明显。



 类似资料:
  • 问题内容: 我最近一直在使用nodejs,并且仍然要处理模块系统,因此很抱歉这是一个明显的问题。我想要大致如下的代码: a.js (主文件与节点一起运行) b.js 我的问题似乎是我无法从ClassB实例中访问ClassA实例。 有没有正确/更好的方法来构造模块来实现我想要的?是否有更好的方式在模块之间共享变量? 问题答案: 尽管node.js确实允许循环依赖,但正如您所发现的那样,它可能很杂乱,

  • 我最近一直在使用nodejs,并且仍然在掌握模块系统,所以如果这是一个明显的问题,请原谅。我想要大致如下的代码: a.js(主文件与节点一起运行) b.js 我的问题似乎是我无法从ClassB的实例中访问ClassA的实例。 有没有正确/更好的方法来构建模块以实现我想要的?有没有更好的方法在模块之间共享变量?

  • 问题内容: 我有两个文件和,分别定义了两个类和。 直到今天,用于引用该对象的定义,因此我已经做了 在文件中。 但是,到目前为止,我已经为引用该对象的对象创建了一个新方法。 尝试导入时遇到了问题:我尝试了一下,当程序运行并调用了using的方法时,出现了一个未定义的异常。 我该怎么办? 问题答案: 导入Python模块 是一篇很棒的文章,介绍了Python中的循环导入。 解决此问题的最简单方法是将路

  • 问题内容: 假设我们有两个具有循环依赖性的模块: 这两个模块在目录中为空。如此答案中所述,导入或工作正常。如果我将进口改为相对进口) 我得到一个想要的模块的进口之一时: 为什么会出现此错误?情况与上面的情况大不相同吗? 编辑 :此问题与软件设计无关。我知道避免循环依赖的方法,但是无论如何我都对错误的原因感兴趣。 问题答案: 首先让我们从python的工作方式开始: 首先让我们看一下字节码: 嗯,有

  • 问题内容: 在我的系统中,我在浏览器中加载了许多“类”,在开发过程中,每个类都有单独的文件,并串联在一起进行生产。加载它们时,它们在全局对象(这里)上初始化一个属性,如以下示例所示: 我考虑使用James Burke的建议,而不是使用自己的全局对象,而是考虑使每个类都具有自己的AMD模块: 问题在于,以前在Employee和Company之间没有声明时间依赖关系:您可以按所需的顺序放置声明,但是现

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