试图在同一个文件中拥有两个相互引用的类。什么是让这个工作的最佳方式:
class Foo(object):
other = Bar
class Bar(object):
other = Foo
if __name__ == '__main__':
print 'all ok'
?
问题似乎是因为属性在类上,因为它试图在类本身被解析后立即执行。
有没有办法解决这个问题?
编辑:
这些键用于 SQLAlchemy 映射,因为它们实际上是类变量(不是实例)。
试图在同一个文件中拥有两个相互引用的类。什么是让这个工作的最佳方式:
class Foo(object):
other = Bar
class Bar(object):
other = Foo
if __name__ == '__main__':
print 'all ok'
?
问题似乎是因为属性在类上,因为它试图在类本身被解析后立即执行。
有没有办法解决这个问题?
编辑:
这些键用于 SQLAlchemy 映射,因为它们实际上是类变量(不是实例)。
这会做你想要的:
class Foo(object):
pass
class Bar(object):
pass
Foo.other = Bar
Bar.other = Foo
不过,我宁愿完全避免这种设计。
假设您真的想要Foo.other并且Bar.other成为类属性,而不是实例属性,那么这有效(我测试过,只是为了确定):
class Foo(object):
pass
class Bar(object):
pass
Foo.other = Bar
Bar.other = Foo
如果您追求的是实例属性,那么 aaronasterling 的答案更合适。