Hopefully sufficiently documented to stand without introduction:
def getclassdistance(srcs, dst): """srcs may be either a single class or a list of (class, distance) pairs. dst is the superclass to find. Performs a breadth-first search for dst, returning the shortest distance. """ if type(srcs) != list: srcs = [(srcs, 0)] if len(srcs) == 0: return None here, distance = srcs if here == dst: return distance newSrc = srcs[1:] + [(c, distance + 1) for c in list(here.__bases__)] return classDistance(newSrc, dst)
If this is already implemented and I just couldn't find it, I'm more than happy to withdraw the idea.
Nova Engineer, HP Cloud. AKA lealexis, lxsli.