def get(self, column, useMethod=True, **context):
<EOL>if isinstance(column, (str, unicode)) and '<STR_LIT:.>' in column:<EOL><INDENT>base_context = context.copy()<EOL>base_context['<STR_LIT>'] = True<EOL>parts = column.split('<STR_LIT:.>')<EOL>if isinstance(self.schema().column(column), orb.ReferenceColumn):<EOL><INDENT>expand_path_index = None<EOL><DEDENT>else:<EOL><INDENT>expand_path_index = -<NUM_LIT:1><EOL><DEDENT>value = self<EOL>for i, part in enumerate(parts[:-<NUM_LIT:1>]):<EOL><INDENT>sub_context = base_context.copy()<EOL>expand_path = '<STR_LIT:.>'.join(parts[i+<NUM_LIT:1>:expand_path_index])<EOL>try:<EOL><INDENT>sub_expand = sub_context['<STR_LIT>']<EOL><DEDENT>except KeyError:<EOL><INDENT>sub_context['<STR_LIT>'] = expand_path<EOL><DEDENT>else:<EOL><INDENT>if isinstance(sub_expand, basestring):<EOL><INDENT>sub_context['<STR_LIT>'] += '<STR_LIT>'.format(expand_path)<EOL><DEDENT>elif isinstance(sub_expand, list):<EOL><INDENT>sub_expand.append(expand_path)<EOL><DEDENT>elif isinstance(sub_expand, dict):<EOL><INDENT>curr = {}<EOL>for x in xrange(len(parts) - <NUM_LIT:1> + (expand_path_index or <NUM_LIT:0>), i, -<NUM_LIT:1>):<EOL><INDENT>curr = {parts[x]: curr}<EOL><DEDENT>sub_expand.update(curr)<EOL><DEDENT><DEDENT>value = value.get(part, useMethod=useMethod, **sub_context)<EOL>if value is None:<EOL><INDENT>return None<EOL><DEDENT><DEDENT>return value.get(parts[-<NUM_LIT:1>], useMethod=useMethod, **context)<EOL><DEDENT>else:<EOL><INDENT>my_context = self.context()<EOL>for k, v in my_context.raw_values.items():<EOL><INDENT>if k not in orb.Context.QueryFields:<EOL><INDENT>context.setdefault(k, v)<EOL><DEDENT><DEDENT>sub_context = orb.Context(**context)<EOL>if isinstance(column, orb.Column):<EOL><INDENT>col = column<EOL><DEDENT>else:<EOL><INDENT>col = self.schema().column(column, raise_=False)<EOL>if not col:<EOL><INDENT>if isinstance(column, orb.Collector):<EOL><INDENT>collector = column<EOL><DEDENT>else:<EOL><INDENT>collector = self.schema().collector(column)<EOL><DEDENT>if collector:<EOL><INDENT>try:<EOL><INDENT>return self.__cache[collector][sub_context]<EOL><DEDENT>except KeyError:<EOL><INDENT>records = collector(self, useMethod=useMethod, context=sub_context)<EOL>self.__cache[collector][sub_context] = records<EOL>return records<EOL><DEDENT><DEDENT>else:<EOL><INDENT>raise errors.ColumnNotFound(schema=self.schema(), column=column)<EOL><DEDENT><DEDENT><DEDENT>if sub_context.inflated is None and isinstance(col, orb.ReferenceColumn):<EOL><INDENT>sub_context.inflated = column != col.field()<EOL><DEDENT>if col.shortcut() and not isinstance(self, orb.View):<EOL><INDENT>return self.get(col.shortcut(), **context)<EOL><DEDENT>elif useMethod and col.gettermethod():<EOL><INDENT>return col.gettermethod()(self, context=sub_context)<EOL><DEDENT>else:<EOL><INDENT>if self.isRecord() and self.__delayed:<EOL><INDENT>self.__delayed = False<EOL>self.read()<EOL><DEDENT>with ReadLocker(self.__dataLock):<EOL><INDENT>old_value, value = self.__values.get(col.name(), (None, None))<EOL><DEDENT>out_value = col.restore(value, sub_context)<EOL>if isinstance(out_value, orb.Model) and not isinstance(value, orb.Model):<EOL><INDENT>with WriteLocker(self.__dataLock):<EOL><INDENT>self.__values[col.name()] = (old_value, out_value)<EOL><DEDENT><DEDENT>return out_value<EOL><DEDENT><DEDENT>
Returns the value for the column for this record.

:param      column      | <orb.Column> || <str>
            default     | <variant>
            inflated    | <bool>

:return     <variant>