私の質問は、親クラスによって両方とも作成された 2 つのオブジェクトがどのように互いに通信できるかについてです。私が持っている実際の使用例は、CentralWidget にある 2 つのウィジェットが信号とスロットを接続する必要がある PySide GUI アプリケーションです。
ただし、問題はそれよりも一般的であるため、問題を示すためのばかげた例があります。
特に、Son の「asksister」メソッドでは、親に娘がいることがわかっており、これら 2 つのメソッドを接続する必要があります。ただし、接続をハードリンクすると、オブジェクト構造全体を作成せずにユニットテストを実行できなくなります。
より良い方法はありますか?
私が実際のコードをここに投稿した場合、それはそれほど不自由ではありませんか(単純化した後)
class Parent(object):
def __init__(self):
self.son = Son(self)
self.daughter = Daughter(self)
self.son.dohomework()
class Son(object):
def __init__(self, parent):
self.parent = parent
def dohomework(self):
print 'The answer is {0}'.format(self.asksister())
def asksister(self):
return self.parent.daughter.answer()
class Daughter(object):
def __init__(self, parent):
self.parent = parent
def answer(self):
return 42
if __name__ == '__main__':
parent = Parent()