class_docstr: Descriptor for a service.
  
  Attributes:
    name (str): Name of the service.
    full_name (str): Full name of the service, including package name.
    index (int): 0-indexed index giving the order that this services
      definition appears within the .proto file.
    methods (list[MethodDescriptor]): List of methods provided by this
      service.
    methods_by_name (dict(str, MethodDescriptor)): Same
      :class:`MethodDescriptor` objects as in :attr:`methods_by_name`, but
      indexed by "name" attribute in each :class:`MethodDescriptor`.
    options (descriptor_pb2.ServiceOptions): Service options message or
      None to use default service options.
    file (FileDescriptor): Reference to file info.
docstr: Searches for the specified method, and returns its descriptor.
  
  Args:
    name (str): Name of the method.
  Returns:
    MethodDescriptor or None: the descriptor for the requested method, if
    found.
docstr_tok: ["Searches","for","the","specified","method",",","and","returns","its","descriptor",".","Args",":","name","(","str",")",":","Name","of","the","method",".","Returns",":","MethodDescriptor","or","None",":","the","descriptor","for","the","requested","method",",","if","found","."]
code: def FindMethodByName(self, name):
      """Searches for the specified method, and returns its descriptor.
  
      Args:
        name (str): Name of the method.
      Returns:
        MethodDescriptor or None: the descriptor for the requested method, if
        found.
      """
      return self.methods_by_name.get(name, None)
  
imports: import threading
  import warnings
  from google.protobuf.internal import api_implementation
label_desc: Use image node_id 2 for calling the ServiceDescriptor obj's underlying member method code with example usage: obj.FindMethodByName(name) and returns: self