rendered paste bodynicolas@sky ~/Tmp $ cat cm.py
def bar(self):
return 'foo'
class MetaClass(type):
def __new__(cls, name, bases, attrs):
if name == 'FirstClass':
return super(MetaClass, cls).__new__(cls, name, bases, attrs)
new_class = type.__new__(cls, name, bases, {})
print 'Registered %s' % name
new_class.foo()
return new_class
class FirstClass(object):
__metaclass__ = MetaClass
def foo(cls):
setattr(cls, 'bar', bar)
print 'foo1 done'
foo = classmethod(foo)
class SecondClass(FirstClass):
def foo(cls):
super(SecondClass, cls).foo()
setattr(cls, 'baz', 'baz')
print 'foo2 done'
foo = classmethod(foo)
nicolas@sky ~/Tmp $ python cm.py
Registered SecondClass
foo1 done