code: def _get_columns(self, element, data):
      columns = []
      for d in element.dimensions():
          col = dimension_sanitizer(d.name)
          kind = data[col].dtype.kind
          if kind == "i":
              formatter = NumberFormatter()
              editor = IntEditor()
          elif kind == "f":
              formatter = NumberFormatter(format="0,0.0[00000]")
              editor = NumberEditor()
          elif isdatetime(data[col]):
              dimtype = element.get_dimension_type(col)
              dformat = Dimension.type_formatters.get(
                  dimtype, "%Y-%m-%d %H:%M:%S"
              )
              formatter = DateFormatter(format=dformat)
              editor = DateEditor()
          else:
              formatter = StringFormatter()
              editor = StringEditor()
          column = TableColumn(
              field=dimension_sanitizer(d.name),
              title=d.pprint_label,
              editor=editor,
              formatter=formatter,
          )
          columns.append(column)
      return columns
  
file_path: holoviews/holoviews/plotting/bokeh/tabular.py
imports: import param
  from bokeh.models import Column
  from bokeh.models.widgets import DataTable, DateEditor, DateFormatter, IntEditor, NumberEditor, NumberFormatter, StringEditor, StringFormatter, TableColumn
  from ...core import Dataset, Dimension
  from ...core.util import dimension_sanitizer, isdatetime
  from ...element import ItemTable
  from ...streams import Buffer
  from ..plot import GenericElementPlot
  from .plot import BokehPlot
  from .selection import TabularSelectionDisplay
label_desc: Use image node_id 4 for calling the TablePlot obj's underlying member method code with example usage: obj._get_columns(element, data) and returns: columns