Python 変数として動作するクラスを作成したいと思いますが、「変数」が変更/読み取りされたときにコールバック関数を呼び出します。
つまり、次のようにクラスを使用できるようにしたいと考えています。
x=myClass(change_callback, read_callback)
x を myclass のインスタンスとして定義します。コンストラクター ( INIT ) は、パラメーターとして 2 つの関数を受け取ります。x が変更されるたびに呼び出される関数と、x が「読み取られる」たびに呼び出される関数です。
次のステートメント:
x=1
1を「保存」し、change_callback(1)
何でもできる呼び出しをトリガーします。
次のステートメント:
a=x
保存された値を取得し、保存された値を変更して他のことを行う可能性のある呼び出しread_callback()
を行います。
たとえば、次のようなものを記述できるようにするために、これを任意のタイプで機能させたいと思います。
x=[1 2 3]
トリガーするものchange_callback([1 2 3])
x.append(4)
トリガーchange_callback([1 2 3 4])
します(およびおそらくread_callback()
before への呼び出し)
x={'a':1}
トリガーしますchange_callback({'a':1})
print(x)
read_callback() への呼び出しをトリガーします...もちろん、最後に保存された値を印刷用に返します。
アイデアは、変数へのアクセスをログに記録したり、他の計算を生成したりできるということです...一見。
これが可能であるべきだと感じていますが、オブジェクトが何から継承する必要があるのか よくわかりません...リストなどの1つのタイプに制限する必要がある場合、すべての代入演算子を再定義する方法はありますかappend()...) のようなメソッドを「一度に」実行して、元の動作 (基本クラスのメソッド) を維持し、コールバックを追加します...
または、同じ目標を達成するためのより適切な方法 (モジュール...) はありますか?
前もって感謝します、