class_docstr: Like `property`, but also triggers on access via the class, and it is the
  *class* that's passed as argument.
  
  Examples
  --------
  ::
  
      class C:
          @classproperty
          def foo(cls):
              return cls.__name__
  
      assert C.foo == "C"
class_docstr_tok: ["Like","`","property","`",",","but","also","triggers","on","access","via","the","class",",","and","it","is","the","*","class","*","that","'s","passed","as","argument",".","Examples","--","--","--","--",":",":","class","C",":","@","classproperty","def","foo","(","cls",")",":","return","cls.__name__","assert","C.foo","==","``","C","''"]
code: def __init__(self, fget, fset=None, fdel=None, doc=None):
      self._fget = fget
      if fset is not None or fdel is not None:
          raise ValueError("classproperty only implements fget.")
      self.fset = fset
      self.fdel = fdel
      # docs are ignored for now
      self._doc = doc
  
imports: import functools
  import itertools
  import re
  import sys
  import warnings
  from .deprecation import deprecated, warn_deprecated, rename_parameter, delete_parameter, make_keyword_only, deprecate_method_override, deprecate_privatize_attribute, suppress_matplotlib_deprecation_warning, MatplotlibDeprecationWarning
label_desc: Use image node_id 1 to create a new classproperty object  with example: obj = classproperty(fget, fset, fdel, doc)