当名称已在同一模块中定义时,名称未定义错误

时间:2014-02-20 09:14:57

标签: python module runtime-error

检查以下模块。

# mod.py

class A:
   o = B()

class B:
   o = A()

我有完全相同的模块。班级布局是一样的。我该如何定义这样的东西?

2 个答案:

答案 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