code: def __init__(self, config: Config):
      super().__init__(config)
  
      if self._params().k is None:
          k = len(self._params()["checker"])
      # These checks need to be separate, to make sure that we do not have zero members
      if self._params().k == 0 or self._params().k > len(
          self._params()["checker"]
      ):
          raise IndexError(
              "k must be between 0 and the number of checkers (inclusive)"
          )
  
      self.checkers = []
      for i in self._params()["checker"]:
          # This enforces type consistency
          self.checkers.append(_registry.get_named(i, Checker[T]))
  
imports: from typing import Dict, Generic, Optional
  from ciphey.iface import Checker, Config, ParamSpec, T, _registry
label_desc: Use image node_id 2 to create a new Quorum object from inherited base classes: Generic, Checker with example: obj = Quorum(config)