docs: def copy(self):
          """
          Makes a copy of the factor.
  
          Returns
          -------
          CanonicalDistribution object: Copy of the factor
  
          Examples
          --------
          >>> from pgmpy.factors.continuous import CanonicalDistribution
          >>> phi = CanonicalDistribution(['X', 'Y'], np.array([[1, -1], [-1, 1]]),
                                    np.array([[1], [-1]]), -3)
          >>> phi.variables
          ['X', 'Y']
  
          >>> phi.K
          array([[1, -1],
                 [-1, 1]])
  
          >>> phi.h
          array([[1],
                 [-1]])
  
          >>> phi.g
          -3
  
          >>> phi2 = phi.copy()
  
          >>> phi2.variables
          ['X', 'Y']
  
          >>> phi2.K
          array([[1, -1],
                 [-1, 1]])
  
          >>> phi2.h
          array([[1],
                 [-1]])
  
          >>> phi2.g
          -3
  
          """
          copy_factor = CanonicalDistribution(self.variables, self.K.copy(),
                                              self.h.copy(), self.g)
  
          return copy_factor