from . import action class State: """ Represents a state in the model """ def __init__(self, id, model): """ Initialize :param id: Id of the state :param model: Corresponding model """ self.id = id - 1 self.model = model def __iter__(self): return self def __next__(self): if self.id >= self.model.nr_states - 1: raise StopIteration else: self.id += 1 return self def __str__(self): return "{}".format(self.id) def actions(self): """ Get actions associated with the state :return List of actions """ row_group_indices = self.model.transition_matrix._row_group_indices start = row_group_indices[self.id] end = row_group_indices[self.id+1] return action.Action(start, end, 0, self.model)