class_docstr: Intermediate class that sits on `DataSet` objects and returns memoized
  `BoundColumn` objects when requested.
  
  This exists so that subclasses of DataSets don't share columns with their
  parent classes.
docstr: Produce a concrete BoundColumn object when accessed.
  
  We don't bind to datasets at class creation time so that subclasses of
  DataSets produce different BoundColumns.
docstr_tok: ["Produce","a","concrete","BoundColumn","object","when","accessed",".","We","do","n't","bind","to","datasets","at","class","creation","time","so","that","subclasses","of","DataSets","produce","different","BoundColumns","."]
code: def __get__(self, instance, owner):
      """
      Produce a concrete BoundColumn object when accessed.
  
      We don't bind to datasets at class creation time so that subclasses of
      DataSets produce different BoundColumns.
      """
      return BoundColumn(
          dtype=self.dtype,
          missing_value=self.missing_value,
          dataset=owner,
          name=self.name,
      )
  
imports: from functools import total_ordering
  from six import iteritems, with_metaclass
  from catalyst.pipeline.classifiers import Classifier, Latest
  from catalyst.pipeline.factors import Factor, Latest
  from catalyst.pipeline.filters import Filter, Latest
  from catalyst.pipeline.sentinels import NotSpecified
  from catalyst.pipeline.term import AssetExists, LoadableTerm, validate_dtype
  from catalyst.utils.input_validation import ensure_dtype
  from catalyst.utils.numpy_utils import NoDefaultMissingValue
  from catalyst.utils.preprocess import preprocess
label_desc: Use image node_id 2 for calling the _BoundColumnDescr obj's underlying member method code with example usage: obj.__get__(instance, owner) and returns: BoundColumn