def __get__(self, obj, objtype=None):
    if (objtype is None):
        objtype = type(obj)
    self.fn.__qualname__ = '.'.join([objtype.__qualname__, self.fn.__name__])
    if (obj is None):
        return self.fn
    return types.MethodType(self.fn, obj)
def __get__(self, obj, objtype=None):
    if (objtype is None):
        objtype = type(obj)
    self.fn.__qualname__ = '.'.join([objtype.__qualname__, self.fn.__name__])
    if (obj is None):
        return self.fn
    return types.MethodType(self.fn, obj)