Try running the following example - it should help clear up what is going on:
class Base: def __init__(self): print "Initializing base" def shouldBeImplemented(self): raise NotImplementedError def hasDefaultImplementation(self): print "Wey Hey!" class A(Base): def shouldBeImplemented(self): print "Has been implemented!" class B(Base): def __init__(self): Base.__init__(self) print 'Initializing B' class C(Base): def __init__(self): print "Initializing C" def hasDefaultImplementation(self): print "Boo Hoo!" base = Base() print "\n------- A --------" a = A() a.shouldBeImplemented() print "\n------- B --------" b = B() b.hasDefaultImplementation() print "\n------- C --------" c = C() c.hasDefaultImplementation() c.shouldBeImplemented() -- http://mail.python.org/mailman/listinfo/python-list