docstr: Returns the column count of the :class:`~perspective.Table`.
docstr_tok: ["Returns","the","column","count","of","the",":","class",":","`","~perspective.Table","`","."]
code: def num_columns(self):
      """Returns the column count of the :class:`~perspective.Table`."""
      self._state_manager.call_process(self._table.get_id())
      columns = self._table.get_schema().columns()
      return sum(
          1
          for col in columns
          if col != "psp_okey" and col != "__ROW_PATH__"
      )
  
imports: from datetime import date, datetime
  from ..core.exception import PerspectiveError
  from ._accessor import _PerspectiveAccessor
  from ._callback_cache import _PerspectiveCallBackCache
  from ._date_validator import _PerspectiveDateValidator
  from ._state import _PerspectiveStateManager
  from ._utils import _dtype_to_pythontype, _dtype_to_str, _parse_expression_inputs, _str_to_pythontype
  from .libpsppy import make_table, update_table, str_to_filter_op, t_dtype, t_filter_op, t_op, validate_expressions
  from .view import View
label_desc: Use image node_id 11 for calling the Table obj's underlying member method code with example usage: obj.num_columns() and returns: sum