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

Python相互依赖的类(循环依赖)

邓仲卿
2023-03-14
问题内容

我已经搜索了很多,但是我发现的主要是python中的递归编程示例。因此,问题来了:

我该如何实现?

class A:
    b = B()

class B:
    a = A()

问题答案:

一切在Python中都是动态的-甚至是类声明。在初始声明之后,没有什么可以阻止您修改类的内容的:

class A:
    pass

class B:
    a = A()

A.b = B()

注意:如果您不太熟悉Python,则该pass关键字仅允许您说“这里什么都没有”-除非A类的空值与本例中的一样空,否则它并不重要!



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

  • 我知道循环依赖通常是不被鼓励的——然而,在C#和TypeScript中,我有时发现它们很有用。这可能是因为我缺乏python方面的经验,也可能是因为我的思维方式不对,或者是因为我没有找到谷歌应该使用的词语。我将如何解决以下问题? 我试图创建一个处理请求的类,每个处理事件都伴随着一个上下文。所以,我想创建handler类和context类,但它们是依赖的,linter在第2行给了我问题,说Handl

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

  • 问题内容: 我有一个模块化的maven项目,其中两个模块“ BIZ”和“ EJB”包含如下内容: 如您所见, “ EJB”依赖于“ BIZ”, 因为它使用 MyClassX (实际上,它使用了BIZ的几种类别)。这就是 ImplFactory 使用反射实例化 InterfaceImpl 的原因。问题是 cl.newInstance() 将抛出 ClassCastException, 因为这两个模块

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

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