docs: def inject_classproperty(self, key, name=None, replace_on_access=False):
          '''
          Decorator that injects the specified key as a classproperty.
  
          If replace_on_access is True, then it replaces itself with the instance on first lookup.
  
          :param key: Provider key
          :type key: object
          :param name: Name of classproperty, defaults to key
          :type name: str
          :param replace_on_access: If True, replace the classproperty with the actual value on first lookup
          :type replace_on_access: bool
          '''
          return ClassPropertyInjector(self, key, name=name, replace_on_access=replace_on_access)