'Args:
orig (function)
cached_method_name (str): The name of the chached method.
list_name (str): Name of the argument which is the bulk lookup list
num_args (int): number of positional arguments (excluding ``self``,
but including list_name) to use as cache keys. Defaults to all
named args of the function.
inlineCallbacks (bool): Whether orig is a generator that should
be wrapped by defer.inlineCallbacks'

def __init__(self, orig, cached_method_name, list_name, num_args=None, inlineCallbacks=False):

    super(CacheListDescriptor, self).__init__(orig, num_args=num_args, inlineCallbacks=inlineCallbacks)
    self.list_name = list_name
    self.list_pos = self.arg_names.index(self.list_name)
    self.cached_method_name = cached_method_name
    self.sentinel = object()
    if (self.list_name not in self.arg_names):
        raise Exception(("Couldn't    see    arguments    %r    for    %r." % (self.list_name, cached_method_name)))
