猫型エンジニアのブログ

プログラム/ネットワーク系の技術関連をまとめたページです 

クラスに対してアトリビュートの動的な追加

 クラスからインスタンスを作成後に、動的に新しくアトリビュートを追加することができます。

 以下の例ではTestクラスのインスタンスtestに、関数add_funcを追加しました。dir()でアトリビュートの一覧を表示させた場合に、add_funcが追加されているのが見て取れます。

クラスTestの定義

class Test():
    def __init__(self):
        print "init"

    def func(self):
       print "func"

実効結果

>>> from test import Test

>>> test = Test()
init
>>> dir(test)
['__doc__', '__init__', '__module__', 'func']
>>> test.func()
func

>>> def add_func():
...     print "add_func"
... 
>>> test.add_func = add_func
>>> test.add_func()
add_func
>>> dir(test)
['__doc__', '__init__', '__module__', 'add_func', 'func']