import inspect


def get_class(meth):
    """ Return the class of method meth
        
        Taken from here: https://stackoverflow.com/a/25959545
    """

    if inspect.ismethod(meth):
        for cls in inspect.getmro(meth.__self__.__class__):
            if cls.__dict__.get(meth.__name__) is meth:
                 return cls
        meth = meth.__func__  # fallback to __qualname__ parsing
    if inspect.isfunction(meth):
        cls = getattr(inspect.getmodule(meth),
                      meth.__qualname__.split('.<locals>', 1)[0].rsplit('.', 1)[0])
        if isinstance(cls, type):
            return cls
    ret = getattr(meth, '__objclass__', None)  # handle special descriptor objects
    if ret == None:
        raise ValueError("Couldn't find the class of method %s" % meth)
    return ret