检查以下模块。
# mod.py
class A:
o = B()
class B:
o = A()
我有完全相同的模块。班级布局是一样的。我该如何定义这样的东西?
答案 0 :(得分:4)
不,B
的主体在执行class A
的主体时已经定义(立即)。
在定义A.o
后添加B
:
class A:
pass
class B:
o = A()
A.o = B()
答案 1 :(得分:1)
(注意:正在做的事情很奇怪,但只是回答了问题)
您可以在模块内的运行时设置属性。这有点难看,是的,但它是有效的Python:
class A(object):
pass
class B(object):
pass
# setattr(B, 'o', A())
# setattr(A, 'o', B())
B.o = A() # Making Martijn happy!
A.o = B()
if __name__ == '__main__':
print A().o
print B().o