class_docstr: Decorator that marks that an attribute of a class should not be
  computed until needed, and that the value should be memoized.
  
  Example
  -------
  
  >>> from zipline.utils.memoize import classlazyval
  >>> class C(object):
  ...     count = 0
  ...     @classlazyval
  ...     def val(cls):
  ...         cls.count += 1
  ...         return "val"
  ...
  >>> C.count
  0
  >>> C.val, C.count
  ('val', 1)
  >>> C.val, C.count
  ('val', 1)
class_docstr_tok: ["Decorator","that","marks","that","an","attribute","of","a","class","should","not","be","computed","until","needed",",","and","that","the","value","should","be","memoized",".","Example","--","--","--","-",">",">",">","from","zipline.utils.memoize","import","classlazyval",">",">",">","class","C","(","object",")",":","...","count","=","0","...","@","classlazyval","...","def","val","(","cls",")",":","...","cls.count","+=","1","...","return","``","val","''","...",">",">",">","C.count","0",">",">",">","C.val",",","C.count","(","'val","'",",","1",")",">",">",">","C.val",",","C.count","(","'val","'",",","1",")"]
code: def __get__(self, instance, owner):
      return super(classlazyval, self).__get__(owner, owner)
  
imports: from collections import OrderedDict, Sequence
  from itertools import compress
  from weakref import WeakKeyDictionary, ref
  from six.moves._thread import allocate_lock
  from toolz.sandbox import unzip
  from trading_calendars.utils.memoize import lazyval
  from zipline.utils.compat import wraps
label_desc: Use image node_id 1 for calling the classlazyval obj's underlying member method code with example usage: obj.__get__(instance, owner) and returns: super