python2.xでclassの構文中の順序を保持したオブジェクトを作成する。

python3.x以降でなければできないと思っていました。sqlalchemyやcolanderのコードを見ると2.x系でのやり方が分かります。

基本的な考え方は以下です。

以下の2種類のクラスを用意します。

  • container class
  • field class

肝はfield classです。これをが使われる度に、何らかのカウンターを増やして付加していきます。 すると、そのカウンターの値でソートした結果が使われた順番ということになります。

単純にはこういうことです。

もうすこし、まともな形にしましょう。isinstanceを気にしなければ。単に関数で書いてしまっても構いません。