class_docstr: Describe all the information required to apply a patch.
  
  Attributes
  ----------
  destination : obj
      Patch destination.
  name : str
      Name of the attribute at the destination.
  obj : obj
      Attribute value.
  settings : gorilla.Settings or None
      Settings. If ``None``, the default settings are used.
  
  Warning
  -------
  It is highly recommended to use the output of the function
  :func:`get_attribute` for setting the attribute :attr:`obj`. This will
  ensure that the descriptor protocol is bypassed instead of possibly
  retrieving attributes invalid for patching, such as bound methods.
docstr: Constructor.
  
  Parameters
  ----------
  destination : object
      See the :attr:`~Patch.destination` attribute.
  name : str
      See the :attr:`~Patch.name` attribute.
  obj : object
      See the :attr:`~Patch.obj` attribute.
  settings : gorilla.Settings
      See the :attr:`~Patch.settings` attribute.
code: def __init__(self, destination, name, obj, settings=None):
      """Constructor.
  
      Parameters
      ----------
      destination : object
          See the :attr:`~Patch.destination` attribute.
      name : str
          See the :attr:`~Patch.name` attribute.
      obj : object
          See the :attr:`~Patch.obj` attribute.
      settings : gorilla.Settings
          See the :attr:`~Patch.settings` attribute.
      """
      self.destination = destination
      self.name = name
      self.obj = obj
      self.settings = settings
      self.is_inplace_patch = None
  
imports: import collections
  import copy
  import inspect
  import logging
  import pkgutil
  import sys
  import types
label_desc: Use image node_id 1 to create a new Patch object  with example: obj = Patch(destination, name, obj, settings)