#!/usr/local/bin/python2 class M(type): def __new__(cls, clsname, bases, dict): print bases if 'name' not in dict: dict['name'] = clsname[0].lower() + clsname[1:] return type.__new__(cls, clsname, bases, dict) class C(object): __metaclass__ = M name = 1 class C2(C): name = 2 print C2().name