'Get list of File instances for given torrent.
@return: L{File} instances
@rtype: list
@note: also assigns return value to self.files'

def get_files(self):

    self.files = []
    retriever_methods = [m for m in rtorrentlib.file.methods if (m.is_retriever() and m.is_available(self._rt_obj))]
    m = rtorrentlib.rpc.Multicall(self)
    m.add('f.multicall', self.info_hash, '', *[(method.rpc_call + '=') for method in retriever_methods])
    results = m.call()[0]
    offset_method_index = retriever_methods.index(rtorrentlib.rpc.find_method('f.get_offset'))
    offset_list = sorted([r[offset_method_index] for r in results])
    for result in results:
        results_dict = {}
        for (m, r) in zip(retriever_methods, result):
            results_dict[m.varname] = rtorrentlib.rpc.process_result(m, r)
        f_index = offset_list.index(results_dict['offset'])
        self.files.append(File(self._rt_obj, self.info_hash, f_index, **results_dict))
    return self.files
