Source code for simframe.frame.abstractgroup

from simframe.frame.heartbeat import Heartbeat


[docs] class AbstractGroup(object): """This is an abstract class that serves as template for other classes. ``AbstractGroup`` has a descriptive string, an owner and an updater. The owner is the parent ``Frame`` object and is hidden. The updater is of type ``Heartbeat``. ``AbstractGroup`` has an ``update`` method that is calling ``systole``, ``updater``, and ``diastole`` of the ``Heartbeat`` object, which manages the update of ``AbstractGroup``. ``AbstractGroup`` should not be instanciated directly.""" __name__ = "" _description = "" @property def description(self): '''Description of the instance.''' return self._description @description.setter def description(self, value): if not isinstance(value, str): raise TypeError("<value> has to be of type str.") self._description = value @property def updater(self): '''``Heatbeat`` object with instructions for updating the instance.''' return self._updater @updater.setter def updater(self, value): if isinstance(value, Heartbeat): self._updater = value else: self._updater = Heartbeat(value) def __str__(self): ret = "{}".format(str(self.__name__)) description = " (" + self.description + \ ")" if self.description != "" else self.description ret = "{}{}".format(self.__name__, description) return ret def __repr__(self): return self.__str__() def __iter__(self): """ This is to make it possible to iterate over the non-hidden members of a group. """ return ((name, member) for name, member in self.__dict__.items() if not name.startswith("_"))
[docs] def update(self, *args, **kwargs): """ Function to update the object. Ths functions calls the heartbeat instance of the object. Parameters ---------- args : additional positional arguments kwargs : additional keyword arguments Notes ----- Positional arguments and keyword arguments are only passed to the ``updater``, NOT to ``systole`` and ``diastole``.""" self.updater.beat(self._owner, *args, **kwargs)