Source code for sysdynpy.system

[docs]class System(object): """This class represents a System Dynamics system/model. It maintains a list of system elements (:py:attr:`~_system_elements`). """
[docs] def __init__(self, name): """Constructor method. :param name: The name of the system. :type name: str, optional """ self.name = name self._system_elements = [] """ A list of system elements. :type: list """
[docs] def show_system_elements(self): """Creates a string with information about the system elements. This includes the properties :py:attr:`~.SystemElement.name` and :py:attr:`~.SystemElement.var_name`. Depending on the system element :py:attr:`~.Stock.calc_rule` and :py:attr:`~.Stock.input_elements` are given as additional information. :py:attr:`~.Stock.input_elements` only shows the name of all direct input elements to prevent recursion. The string is printed to the console. """ s = "" s += "==== " + self.name + " ====\n" for element in self._system_elements: s += "{ name: " + element.name if hasattr(element, "value"): s += ", value: " + str(element.value) s += ", var_name: " + str(element.var_name) if hasattr(element, "input_elements"): s += ", input_elements: [" for idx, input_element in enumerate(element.input_elements): if idx < len(element.input_elements)-1: s += "{ name: " + input_element.name + "}, " else: s += "{ name: " + input_element.name + "}" s += "]" s += "}\n" print(s)
@property def name(self): """see :py:meth:`~__init__` """ return self._name @name.setter def name(self, value): if len(value): self._name = value else: raise ValueError("name can not be empty")