'Get items from a TableColumns object.
tc = TableColumns(cols=[Column(name=\'a\'), Column(name=\'b\'), Column(name=\'c\')])
tc[\'a\']  # Column(\'a\')
tc[1] # Column(\'b\')
tc[\'a\', \'b\'] # <TableColumns names=(\'a\', \'b\')>
tc[1:3] # <TableColumns names=(\'b\', \'c\')>'

def __getitem__(self, item):

    if isinstance(item, six.string_types):
        return OrderedDict.__getitem__(self, item)
    elif isinstance(item, (int, np.integer)):
        return self.values()[item]
    elif (isinstance(item, np.ndarray) and (item.shape == ()) and (item.dtype.kind == u'i')):
        return self.values()[item.item()]
    elif isinstance(item, tuple):
        return self.__class__([self[x] for x in item])
    elif isinstance(item, slice):
        return self.__class__([self[x] for x in list(self)[item]])
    else:
        raise IndexError(u'Illegal    key    or    index    value    for    {}    object'.format(self.__class__.__name__))
