2

同じファイル内で、相互に参照する 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 に答える