class_docstr: Combine a list of kernels, e.g. by adding or multiplying (see inheriting
  classes).
  
  Note that kernel composition can be done easily by using the + and * operators
  defined in :class:`Kernel` .
  
  The names of the kernels to be combined are generated from their class
  names.
class_docstr_tok: ["Combine","a","list","of","kernels",",","e.g",".","by","adding","or","multiplying","(","see","inheriting","classes",")",".","Note","that","kernel","composition","can","be","done","easily","by","using","the","+","and","*","operators","defined","in",":","class",":","`","Kernel","`",".","The","names","of","the","kernels","to","be","combined","are","generated","from","their","class","names","."]
code: def _set_kernels(self, kernels: Sequence[Kernel]) -> None:
      # add kernels to a list, flattening out instances of this class therein
      kernels_list: List[Kernel] = []
      for k in kernels:
          if isinstance(k, self.__class__):
              kernels_list.extend(k.kernels)
          else:
              kernels_list.append(k)
      self.kernels = kernels_list
  
imports: import abc
  from functools import partial, reduce
  from typing import Callable, List, Optional, Sequence, Tuple, Union, overload
  import numpy
  import tensorflow
  from check_shapes import check_shapes
  from ..base import AnyNDArray, Module, TensorType
label_desc: Use image node_id 2 for calling the Combination obj's underlying member method code with example usage: obj._set_kernels(kernels) without return types