0

特定の Python 名前空間の {} 辞書定義のメタ文字/演算子をオーバーロードできますか?

私が求めているのは、(純粋な python で) type({}) == dict を type({}) == instance && isinstance({}, MyDict) == True に置き換える方法です。

Python構文の構成ファイルがあります。ユーザーが辞書を定義できるようにしたいのですが、辞書項目の順序がユーザーがコードに入れた順序と同じであることを保証したいと思います。これを行う唯一の方法は、{} 辞書宣言文字を囲むシンタックス シュガーをオーバーロードすることであると考えました。

それができない場合、それはOKの答えです。

ありがとう、チェンツ

4

1 に答える 1

0

辞書リテラルはコンパイラーによって作成されます (または、コンパイラーはバイトコードを発行してそれらを直接作成します)。これをオーバーライドしたい場合は、ソースを自分でバイトコードにコンパイルしてから、バイトコードを反復処理して、dict の作成を選択したバイトコード シーケンスに置き換える必要があります。

于 2013-10-18T02:13:20.170 に答える