gpt4 book ai didi

python - python类之间的循环依赖

转载 作者:行者123 更新时间:2023-12-05 07:30:50 25 4
gpt4 key购买 nike

在 python 中,类定义可以像这样相互依赖:

 # This is not fine
class A():
b = B().do_sth();
def do_sth(self):
pass

class B():
a = A().do_sth();
def do_sth(self):
pass

# This is fine
def FuncA():
b = FuncB()

def FuncB():
a = FuncA()
  1. 为什么类有这个问题,而函数没有?
  2. 像C++这样的语言都有声明:class B来解决这种依赖,python有类似的构造吗?

最佳答案

在函数的情况下,我们实际上不必调用 FuncB 来定义 FuncA。 FuncB只需要在真正调用FuncA的时候调用即可。

与函数不同,类的主体在定义时执行。要定义类 A,我们需要实际调用 B 方法,但我们不能这样做,因为类 B 尚未定义。

要解决这个问题,我们可以定义类,然后再添加属性:

class A(object):
...

class B(object):
...

A.b = B.do_sth()
B.A = A.do_sth()

但是,如果每个 do_sth 调用都依赖于另一个已经执行的调用,则此解决方案将不起作用。您将需要执行更广泛的更改才能解决问题。

关于python - python类之间的循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52078009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com