docstr: Returns True if the graph has self loop.
docstr_tok: ["Returns","True","if","the","graph","has","self","loop","."]
code: def has_self_loop(self):
      """
      Returns True if the graph has self loop.
      """
      # Detect self loop
      if self.properties.self_loop is None:
          elist = self.edgelist.edgelist_df
          if (
              elist[simpleGraphImpl.srcCol]
              == elist[simpleGraphImpl.dstCol]
          ).any():
              self.properties.self_loop = True
          else:
              self.properties.self_loop = False
      return self.properties.self_loop
  
imports: from cugraph.structure import graph_primtypes_wrapper
  from cugraph.structure.graph_primtypes_wrapper import Direction
  from cugraph.structure.symmetrize import symmetrize
  from cugraph.structure.number_map import NumberMap
  import cugraph.dask.common.mg_utils
  import cudf
  import dask_cudf
  import cugraph.dask.comms.comms
  import pandas
  import numpy
  import warnings
  from cugraph.dask.structure import replication
  from typing import Union, Dict
  from pylibcugraph import get_two_hop_neighbors, select_random_vertices
  from pylibcugraph import ResourceHandle, GraphProperties, SGGraph
label_desc: Use image node_id 32 for calling the simpleGraphImpl obj's underlying member method code with example usage: obj.has_self_loop() and returns: self