可能重复:
Python相互依赖的类(循环依赖)
我在同一模块/文件中有2个类,它们彼此使用.
class ClassA:
x = ClassB()
class ClassB:
x = ClassA()
Run Code Online (Sandbox Code Playgroud)
ClassA会有问题,因为ClassB的声明是在ClassA之后,因此找不到ClassB.
我该如何解决这个问题?我能以某种方式导入ClassB吗?
更新:我的坏.上面的例子有一个循环引用,令许多人反感..让我再试一次:
class ClassA:
x = 1
y = ClassB.x
class ClassB:
x = 2
y = ClassA.x
Run Code Online (Sandbox Code Playgroud)
我可以在ClassA实现之前以某种方式导入ClassB吗?或者某种前瞻性的宣言.
这有效:
class ClassA:
pass
class ClassB:
x = ClassA()
ClassA.x = ClassB()
Run Code Online (Sandbox Code Playgroud)
但这真的是你想要做的吗?这样做的需要让我觉得你应该重新考虑你的设计......
当然,如果它们不需要是类属性(例如,如果实例属性工作正常,因为不是每个ClassX实例都需要共享相同的数据),您可以这样做:
class ClassA(object): #inheriting from object is always a good idea
def __init__(self):
self.x = ClassB()
class ClassB(object):
def __init__(self):
self.x = ClassA()
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为在实例化类之前不会发生对象创建(因此在全局字典中查找).