rendered paste body#!/usr/bin/env python# encoding: utf-8def save_desc(self, desc, *args, **kwargs): self.desc = desc self.__init_orig__(*args, **kwargs)class DescMetaclass(type): def __new__(cls, name, bases, attrs): if not name == 'Field': attrs['__init_orig__'] = attrs['__init__'] attrs['__init__'] = save_desc return type.__new__(cls, name, bases, attrs) class Field(object): __metaclass__ = DescMetaclass def __init__(self, widget=None, required=True): self.d={} self.d['widget'] = widget self.d['required'] = required def render(self): print self.desc print self.dclass RegExpField(Field): def __init__(self, widget=None, required=True, regexp=None, caseSensivity=False): Field.__init__(self, widget=widget, required=required) self.d['regexp'] = regexp self.d['caseSensivity'] = caseSensivity def main(): t=RegExpField('aaaa', regexp='.+', widget=123) t.render()if __name__ == '__main__': main()