2

试图在同一个文件中拥有两个相互引用的类。什么是让这个工作的最佳方式:

class Foo(object):
    other = Bar

class Bar(object):
    other = Foo

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

?

问题似乎是因为属性在类上,因为它试图在类本身被解析后立即执行。

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

编辑:

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

4

2 回答 2

10

这会做你想要的:

class Foo(object):
    pass

class Bar(object):
    pass

Foo.other = Bar
Bar.other = Foo

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

于 2010-07-17T03:05:15.143 回答
1

假设您真的想要Foo.other并且Bar.other成为类属性,而不是实例属性,那么这有效(我测试过,只是为了确定):

class Foo(object):
    pass

class Bar(object):
    pass

Foo.other = Bar
Bar.other = Foo

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

于 2010-07-17T03:06:28.267 回答