私はDigitalLifeAssistant(Siriに少し似ています)のインフラストラクチャを作成しています。このアプリケーションは、Pythonで記述されたプラグインを使用して、高度に拡張可能であると想定されています。システム全体が変数のツリーを共有します。変数はPythonタイプを使用して保存されるのではなく、カスタムの「変数」タイプを使用して保存されます。変数にはgetvalueメソッドとsetvalueメソッドがあります。たとえばvar=Variable();var.setvalue('child1','thisvalue')
、を行うことができますが、var.setvalue('child1.child2','othervalue')
。値を取得するだけvar.getvar('child1.child2').getvalue()
でなく、var1=var.getvar('child1');var1.getvar('child2').getvalue()
。Getvarは子変数のVariableインスタンスを返し、getvalueは引数を受け取らず、変数が格納された型(strやintなど)を返します。
変数インスタンスがより多くのことを実行できるシステムを実装したいと思います。たとえば、現在の日時を返す変数を作成したり、Webサイトからデータをフェッチしたりできます。TwistedのDeferredのようにコールバックシステムを使用したくありません。
開発者にVariableクラスを継承させ、getvalueおよび/またはsetvalueおよび/またはgetvarメソッドをオーバーライドすることを考えましたが、これは「正しい」とは感じません。もっとエレガントな解決策があると思います。理想的には、必ずしもそうとは限りませんが、変数のgetvalueなどのメソッドは、作成後に変更/追加できます。
他のプロジェクトはこれをどのように行いますか?そのプロジェクトがこの種のことをどのように行うかを確認するために私が調べることができる他のプロジェクトはおそらくありますか?
ご協力いただきありがとうございます。