class_docstr: Internal base class.
  
  Concrete subclasses must implement plotting methods (e.g. `line`, `scatter`, `image`).
  A plotting method must call `self` which will effectively create a HoloViewsConverter
  and call it to return a HoloViews object.
  
  Concrete subclasses are meant to be mounted onto a datastructure property, e.g.:
  
  ```
  _patch_plot = lambda self: hvPlotTabular(self)
  _patch_plot.__doc__ = hvPlotTabular.__call__.__doc__
  plot_prop = property(_patch_plot)
  setattr(pd.DataFrame, 'hvplot', plot_prop)
  ```
class_docstr_tok: ["Internal","base","class",".","Concrete","subclasses","must","implement","plotting","methods","(","e.g",".","`","line","`",",","`","scatter","`",",","`","image","`",")",".","A","plotting","method","must","call","`","self","`","which","will","effectively","create","a","HoloViewsConverter","and","call","it","to","return","a","HoloViews","object",".","Concrete","subclasses","are","meant","to","be","mounted","onto","a","datastructure","property",",","e.g",".",":","``","`","_patch_plot","=","lambda","self",":","hvPlotTabular","(","self",")","_patch_plot.__doc__","=","hvPlotTabular.__call__.__doc__","plot_prop","=","property","(","_patch_plot",")","setattr","(","pd.DataFrame",",","'hvplot","'",",","plot_prop",")","``","`"]
docstr: Custom getattribute to expose user defined subplots.
docstr_tok: ["Custom","getattribute","to","expose","user","defined","subplots","."]
code: def __getattribute__(self, name):
      """
      Custom getattribute to expose user defined subplots.
      """
      plots = object.__getattribute__(self, "_plots")
      if name in plots:
          plot_opts = plots[name]
          if (
              "kind" in plot_opts
              and name in HoloViewsConverter._kind_mapping
          ):
              param.main.param.warning(
                  "Custom options for existing plot types should not "
                  "declare the 'kind' argument. The .{} plot method "
                  "was unexpectedly customized with kind={!r}.".format(
                      plot_opts["kind"], name
                  )
              )
              plot_opts["kind"] = name
          return hvPlotBase(
              self._data, **dict(self._metadata, **plot_opts)
          )
      return super().__getattribute__(name)
  
imports: import itertools
  from collections import defaultdict
  import param
  from ..converter import HoloViewsConverter
  from ..util import is_list_like, process_dynamic_args
label_desc: Use image node_id 5 for calling the hvPlotBase obj's underlying member method code with example usage: obj.__getattribute__(name) and returns: super, hvPlotBase