python2.xでclassの構文中の順序を保持したオブジェクトを作成する。
python3.x以降でなければできないと思っていました。sqlalchemyやcolanderのコードを見ると2.x系でのやり方が分かります。
基本的な考え方は以下です。
以下の2種類のクラスを用意します。
- container class
- field class
肝はfield classです。これをが使われる度に、何らかのカウンターを増やして付加していきます。 すると、そのカウンターの値でソートした結果が使われた順番ということになります。
単純にはこういうことです。
もうすこし、まともな形にしましょう。isinstanceを気にしなければ。単に関数で書いてしまっても構いません。