2010年7月13日火曜日

クラスに動的にメンバーやメンバー関数を追加

ここのパクリです。ごめんなさい。

#!/usr/bin/env python
#-*- coding:utf-8 -*-


class Echo(object):
    def __getattr__(self, name):
        return lambda: name

    def add_function_attr(self, key, value):
        self.__dict__[key] = lambda : value

    def add_value_attr(self, key, value):
        self.__dict__[key] = value

e = Echo()
print e
print dir(e)
print e.a()
print e.b()
print e.c()

e.add_function_attr("hoge", "foobar")
print e.hoge()
print dir(e.hoge)
e.add_function_attr("abcdefg", "alphabet")
print e.abcdefg()
print dir(e.abcdefg)

e.add_value_attr("foo", "foobar")
print e.foo
print dir(e.foo)
e.add_value_attr("num", 123)
print e.num
print dir(e.num)

0 件のコメント:

コメントを投稿