メタクラス

to: @wozozo

metaclass1.py

# coding:utf-8
class MyMetaclass(type):
    """
    メタクラス
    """
    def __new__(cls, name, bases, attrs):
        # fieldsという名前のフィールドからメソッドを生成する
        def make_method(v):
            # クロージャ
            return lambda self: "%s" % v
        for k, v in attrs.get('fields', {}).iteritems():
            attrs[k] = make_method(v)
        return type.__new__(cls, name, bases, attrs)

class MyBaseClass(object):
    """
    メタクラスを使ったクラス
    """
    __metaclass__ = MyMetaclass

class MyClass(MyBaseClass):
    """
    メタクラスを使ったクラスを継承したクラス
    """
    fields = {'foo': 'bar', 'hoge': 'fuga'}

def main():
    obj = MyClass()
    # fieldsで指定しておいた辞書のキー名でメソッドとしてアクセスできる
    print obj.foo(), obj.hoge()

if __name__ == '__main__':
    main()

実行結果

$ python metaclass1.py
bar fuga

がんばれ。