docs: def get_cpds(self, node=None):
          """
          Returns the cpd of the node. If node is not specified returns all the CPDs
          that have been added till now to the graph
  
          Parameter
          ---------
          node: any hashable python object (optional)
              The node whose CPD we want. If node not specified returns all the
              CPDs added to the model.
  
          Returns
          -------
          A list of TabularCPDs.
  
          Examples
          --------
          >>> from pgmpy.models import BayesianModel
          >>> from pgmpy.factors.discrete import TabularCPD
          >>> student = BayesianModel([('diff', 'grade'), ('intel', 'grade')])
          >>> cpd = TabularCPD('grade', 2, [[0.1, 0.9, 0.2, 0.7],
          ...                               [0.9, 0.1, 0.8, 0.3]],
          ...                  ['intel', 'diff'], [2, 2])
          >>> student.add_cpds(cpd)
          >>> student.get_cpds()
          """
          if node is not None:
              if node not in self.nodes():
                  raise ValueError('Node not present in the Directed Graph')
              for cpd in self.cpds:
                  if cpd.variable == node:
                      return cpd
              else:
                  return None
          else:
              return self.cpds