Python 循环引用
我想在同一个文件里创建两个互相引用的类。有什么好的方法可以让它们正常工作呢:
class Foo(object):
other = Bar
class Bar(object):
other = Foo
if __name__ == '__main__':
print 'all ok'
?
问题似乎在于,因为这个属性是在类里面的,所以它会在类被解析的时候就尝试执行。
有没有办法解决这个问题呢?
补充说明:
这些键是用来做SQLAlchemy映射的,所以它们实际上是类变量(而不是实例变量)。
2 个回答
1
假设你真的想要 Foo.other
和 Bar.other
是类的属性,而不是实例的属性,那么这个方法是可行的(我测试过,确保没问题):
class Foo(object):
pass
class Bar(object):
pass
Foo.other = Bar
Bar.other = Foo
如果你想要的是实例属性,那么aaronasterling的回答会更合适。
10
这个代码可以实现你想要的功能:
class Foo(object):
pass
class Bar(object):
pass
Foo.other = Bar
Bar.other = Foo
不过,我个人更倾向于完全避免这种设计。