class_docstr: ObjectBase is the base class of all DGL CAPI object.
  
  The core attribute is ``handle``, which is a C raw pointer.  It must be initialized
  via ``__init_handle_by_constructor__``.
  
  Note that the same handle **CANNOT** be shared across multiple ObjectBase instances.
class_docstr_tok: ["ObjectBase","is","the","base","class","of","all","DGL","CAPI","object",".","The","core","attribute","is","``","handle","``",",","which","is","a","C","raw","pointer",".","It","must","be","initialized","via","``","__init_handle_by_constructor__","``",".","Note","that","the","same","handle","*","*","CAN","NOT","*","*","be","shared","across","multiple","ObjectBase","instances","."]
code: def __dir__(self):
      plist = ctypes.POINTER(ctypes.c_char_p)()
      size = ctypes.c_uint()
      check_call(
          _LIB.DGLObjectListAttrNames(
              self.handle, ctypes.byref(size), ctypes.byref(plist)
          )
      )
      names = []
      for i in range(size.value):
          names.append(py_str(plist[i]))
      return names
  
file_path: dgl/python/dgl/_ffi/object.py
imports: from __future__ import absolute_import
  import ctypes
  import sys
  from ..None import _api_internal
  from .base import _FFI_MODE, _LIB, c_str, check_call, py_str
  from .object_generic import convert_to_object, ObjectGeneric
label_desc: Use image node_id 1 for calling the ObjectBase obj's underlying member method code with example usage: obj.__dir__() and returns: names