[英]Circular dependency between python classes
在 python 中,類定義可以像這樣相互依賴:
# This is not fine
class A():
b = B().do_sth();
def do_sth(self):
pass
class B():
a = A().do_sth();
def do_sth(self):
pass
# This is fine
def FuncA():
b = FuncB()
def FuncB():
a = FuncA()
class B
來解決這種依賴,python 有類似的構造嗎?在函數情況下,我們實際上不必調用 FuncB 來定義 FuncA。 只有在我們實際調用 FuncA 時才需要調用 FuncB。
與函數不同,類的主體在定義時執行。 要定義類 A,我們需要實際調用 B 方法,我們不能這樣做,因為類 B 尚未定義。
為了解決這個問題,我們可以定義類,然后添加屬性:
class A(object):
...
class B(object):
...
A.b = B.do_sth()
B.A = A.do_sth()
但是,如果每個do_sth
調用都依賴於已經執行的另一個調用,則此解決方案將不起作用。 您將需要執行更廣泛的更改來解決問題。
b = B.do_smth()
) 是在定義類時執行的,而不是在創建類的實例時執行
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.