def c(self, *args, **kwargs):
<EOL>if len(args) + len(kwargs) == <NUM_LIT:0>:<EOL><INDENT>print("<STR_LIT>")<EOL>if len(self.ckeys)==<NUM_LIT:0>: print ('<STR_LIT>')<EOL>for n in range(len(self.ckeys)):<EOL><INDENT>print('<STR_LIT:U+0020>'+str(n)+'<STR_LIT>'+str(self.ckeys[n])+'<STR_LIT:U+0020>'+str(_n.shape(self[n])))<EOL><DEDENT>return<EOL><DEDENT>elif len(args):   n = args[<NUM_LIT:0>]<EOL>elif len(kwargs): <EOL><INDENT>for k in kwargs: n = kwargs[k]<EOL><DEDENT>if len(self.columns) == <NUM_LIT:0>:   return None<EOL>if type(n)   is str: return self.columns[n]<EOL>if type(n) in [list, tuple, range]:<EOL><INDENT>output = []<EOL>for i in n: output.append(self[i])<EOL>return output<EOL><DEDENT>if type(n) is slice:<EOL><INDENT>start = n.start<EOL>stop  = n.stop<EOL>step  = n.step<EOL>if start == None: start = <NUM_LIT:0><EOL>if stop  == None or stop>len(self): stop  = len(self)<EOL>if step  == None: step  = <NUM_LIT:1><EOL>return self[range(start, stop, step)]<EOL><DEDENT>return self.columns[self.ckeys[n]]<EOL>
Takes a single argument or keyword argument, and returns the specified 
column. If the argument (or keyword argument) is an integer, return the 
n'th column, otherwise return the column based on key.

If no arguments are supplied, simply print the column information.