Closed Apricot-S closed 6 months ago
PresentationBase
が RPA
のプライベートメンバにアクセスするプライベートプロパティを持っていればよさそう
そうすれば既存のコードの変更も不要になるし、Ruff の警告も 1 箇所ずつの計 2 箇所で済む
PresentationBase
がRPA
のプライベートメンバにアクセスするプライベートプロパティを持っていればよさそう そうすれば既存のコードの変更も不要になるし、Ruff の警告も 1 箇所ずつで済む
この場合の変更範囲
PresentationBase
の__init__
の実装および docstringPresentationBase
にプライベートプロパティを追加(ここは警告が出るが無視する)***Presentation
の__init__
の実装および docstringPresentationCreator
の引数テストは変更不要のはず(要確認)
変更した場合の影響範囲について
RPA
と Presentation***
が循環参照になる
RPA.wait()
は本来別のクラスかトップレベルの関数になるべきかもしれない
とりあえず Presentation***
の import
をwait()
メソッド内に移動すればエラーは起きなくなる
本格的な変更は一旦後にする
疑問
RPA
クラスを経由すると browser
と message_queue_client
が None
でないか毎回確認が必要となるが設計として正しいか? 一旦ローカル変数に受けるべき?
概要
各Presentationは現在
_impl
のBrowserBase
,MessageQueueClientBase
,PresentationCreatorBase
をメンバーに持っているが、できればRPA
をメンバーに持つようにする ただし、RPA
のプライベートメンバーへのアクセスを避けつつ外部には非公開にする必要がある(要設計)なぜ必要か
RPA.wait
からしかPresentationBase
を受け取れず、自分で生成できないRPA.close()
にてBrowserBase
,MessageQueueClientBase
を終了してもPresentationからの参照が残っているため_impl
のクラスの__del__
が呼ばれないTo Be
Presentationクラスの
__init__
に_impl
のクラスではなくRPA
クラスを与えるRPA
はPresentationに各メンバーを公開する手段を持つ(フレームワーク利用者には非公開にする)