私のプロジェクトでは、Python 2.5 (Google App Engine) に固執する必要があります。アプリケーション (実際にはフレームワーク) のどこかで、どの変数が定義され、どの順序で定義されているかを追跡する必要があります。つまり、代入演算子が処理されるたびにインターセプトしたいと考えています。
__prepare__
Python 3 を使用して、いつアクセスされたかを追跡するインテリジェントな辞書を返すメソッドを持つメタクラス M を定義します。次に、メタクラス M を使用してクラス ステートメント内のすべてを実行する必要があります。
これを Python 2.5 でエミュレートする方法はありますか?
私が達成したいことの例
Python 3 のメタクラス アプローチを使用すると、参照のように機能する変数を実装できます。たとえば、M はそのようにすることができます。
# y is a callable
class C(metaclass=M):
x = ref(y)
x = 1
は (C の作成まで) と同等ですy(1)
。つまり、ブラック ボックスref
関数による C の辞書内の変数への最初の代入により、この変数が作成されます。追加の割り当ては、ref 関数のパラメーターを呼び出すだけです。