Python循环引用

时间:2010-07-17 02:56:34

标签: python sqlalchemy circular-dependency

尝试在同一个文件中有两个引用彼此的类。什么是最好的工作方式:

class Foo(object):
    other = Bar

class Bar(object):
    other = Foo

if __name__ == '__main__':
    print 'all ok'

问题似乎是因为属性在类上,因为它会在解析类本身时尝试执行。

有没有办法解决这个问题?

编辑:

这些键用于SQLAlchemy映射,它们实际上是类变量(不是实例)。

2 个答案:

答案 0 :(得分:10)

这可以做你想要的:

class Foo(object):
    pass

class Bar(object):
    pass

Foo.other = Bar
Bar.other = Foo

我宁愿完全避免这种设计。

答案 1 :(得分:1)

假设你真的希望Foo.otherBar.other是类属性而不是实例属性,那么这是有效的(我测试过,只是为了确定):

class Foo(object):
    pass

class Bar(object):
    pass

Foo.other = Bar
Bar.other = Foo

如果它是你所追求的实例属性,那么aaronasterling的答案更合适。