簡體   English   中英

Python循環引用

[英]Python circular references

試圖在同一個文件中有兩個引用彼此的類。 什么是最好的工作方式:

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.otherBar.other成為類屬性,而不是實例屬性,那么這是有效的(我測試過,只是為了確定):

class Foo(object):
    pass

class Bar(object):
    pass

Foo.other = Bar
Bar.other = Foo

如果它是你所追求的實例屬性,那么aaronasterling的答案更合適。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM