クラスに対して動的にメソッドを追加する

Python で、クラスに対してあとから動的にメソッドを追加するには、new モジュールを使う。

import new

class Foo(object):
    pass

obj = Foo()
obj.f1("abc")   #=> AttributeError: 'Foo' object has no attribute 'f1'

def f1(self, arg):
    print repr(arg)

Foo.f1 = new.instancemethod(f1, None, Foo)
obj.f1("abc")   #=> 'abc'


new モジュールはこの他にも、

を動的に定義できる。