Pythonを使用して特定のデータ構造を記述する独自の小さなDSLを作成する必要があるとします。たとえば、私は次のようなものを書くことができるようになりたいです
f(x) = some_stuff(a,b,c)
宣言されていない識別子について文句を言ったり、関数some_stuffを呼び出そうとしたりする代わりに、Pythonを使用して、さらに便利なようにリテラル式に変換します。
__getattr__
適切に再定義されたメソッドと__setattr__
メソッドを使用してクラスを作成し、それを次のように使用することで、これに合理的な近似値を得ることができます。
e = Expression()
e.f[e.x] = e.some_stuff(e.a, e.b, e.c)
迷惑な「e」を取り除くことができれば、それでもかっこいいでしょう。接頭辞を付け、[]の使用を避けることもできます。だから私は疑問に思っていましたが、グローバル名のルックアップと割り当てを一時的に「再定義」することは可能ですか?関連するメモとして、Python式のこのような「引用」機能を簡単に実現するための優れたパッケージがあるのではないでしょうか。