docs: def add_factors(self, *factors):
          """
          Associate a factor to the graph.
          See factors class for the order of potential values
  
          Parameters
          ----------
          *factor: pgmpy.factors.factors object
              A factor object on any subset of the variables of the model which
              is to be associated with the model.
  
          Returns
          -------
          None
  
          Examples
          --------
          >>> from pgmpy.models import MarkovModel
          >>> from pgmpy.factors.discrete import DiscreteFactor
          >>> student = MarkovModel([('Alice', 'Bob'), ('Bob', 'Charles'),
          ...                        ('Charles', 'Debbie'), ('Debbie', 'Alice')])
          >>> factor = DiscreteFactor(['Alice', 'Bob'], cardinality=[3, 2],
          ...                 values=np.random.rand(6))
          >>> student.add_factors(factor)
          """
          for factor in factors:
              if set(factor.variables) - set(factor.variables).intersection(
                      set(self.nodes())):
                  raise ValueError("Factors defined on variable not in the model",
                                   factor)
  
              self.factors.append(factor)