# -*- coding: Latin-1 -*-

import types

class InnerInheritance:
    def __call__(self, name, bases, attrs):
        result = type(name, bases, attrs)
        for (name, value) in attrs.iteritems():
            if isinstance(value, (type, types.ClassType)):
                bases = [b is OuterClass and result or b for b in value.__bases__]
                setattr(result, name, type(value)(name, tuple(bases), value.__dict__))
        return result

class OuterClass:
    pass

class Outer:
    __metaclass__ = InnerInheritance()
    class Inner(OuterClass):
        pass

print Outer.Inner.__bases__


