Check that `value` is a subclass of `klass` but that it is not actually
    `klass`. Unlike issubclass(), does not raise an exception if `value` is
    not a type.

def is_strict_subclass (value, klass):
    """Check that `value` is a subclass of `klass` but that it is not actually
    `klass`. Unlike issubclass(), does not raise an exception if `value` is
    not a type.

    """
    return (isinstance (value, type) and
            issubclass (value, klass) and
            value is not klass)