尝试在同一个文件中有两个引用彼此的类。什么是最好的工作方式:
class Foo(object):
other = Bar
class Bar(object):
other = Foo
if __name__ == '__main__':
print 'all ok'
?
问题似乎是因为属性在类上,因为它会在解析类本身时尝试执行。
有没有办法解决这个问题?
编辑:
这些键用于SQLAlchemy映射,它们实际上是类变量(不是实例)。
答案 0 :(得分:10)
这可以做你想要的:
class Foo(object):
pass
class Bar(object):
pass
Foo.other = Bar
Bar.other = Foo
我宁愿完全避免这种设计。
答案 1 :(得分:1)
假设你真的希望Foo.other
和Bar.other
是类属性而不是实例属性,那么这是有效的(我测试过,只是为了确定):
class Foo(object):
pass
class Bar(object):
pass
Foo.other = Bar
Bar.other = Foo
如果它是你所追求的实例属性,那么aaronasterling的答案更合适。