Pythonでインスタンスメソッドというのは,インスタンスにバウンド(ヒモ付?束縛?)されている関数に過ぎない,という話をどこかで読んだ.

――

[python インスタンスメソッド]でググったら,Python の self とかクラスとかインスタンス変数とか - YoshioriのBlogとか,和訳 : なぜPythonのメソッド引数に明示的にselfと書くのか | TRIVIAL TECHNOLOGIES on CLOUDが見つかったので,こちらを読むと良いだろう.

――

この性質(モジュールメソッドをインスタンスメソッドとしても使える)から,コンポジットパターンにちょっと似てると思ったが,気のせいかもしれない.

木構造を伴う再帰的なデータ構造を表すことができる。

とりあえず書いたのがこちら.

# coding: utf-8
'''
Created on 2011/05/24
'''

def get(a_list, id):
    return a_list[id]

class A(list):
    get = get

a_list = A(range(5))

assert get(a_list, 2) == 2
assert a_list.get(2) == 2

b_list = A(range(5, 10))
assert get(b_list, 2) == 7
assert b_list.get(2) == 7

モジュールメソッドは,あるリストの番号に入っている数字を取り出す関数だ.これをクラスAに着けることで,Aにもget()関数を追加した.この場合,A.get()の第1引数のa_listには必ずAのインスタンスが入る.

……何かに使えそうだと思ったんだけど,未だに何に使えるか解らない(笑)