""" CityObjectsCluster module SPDX - License - Identifier: LGPL - 3.0 - or -later Copyright © 2020 Project Author Pilar Monsalvete Alvarez de Uribarri pilar.monsalvete@concordia.ca """ from abc import ABC from typing import List from city_model_structure.attributes.sensor import Sensor class CityObjectsCluster(ABC): """ CityObjectsCluster(ABC) class """ def __init__(self, name, cluster_type, city_objects): self._name = name self._cluster_type = cluster_type self._city_objects = city_objects self._sensors = [] @property def name(self): return self._name @property def type(self): raise NotImplementedError @property def city_objects(self): raise NotImplementedError def add_city_object(self, city_object): if self._city_objects is None: self._city_objects = [city_object] else: self._city_objects.append(city_object) return self._city_objects @property def sensors(self) -> List[Sensor]: """ Sensor list belonging to the city objects cluster :return: [Sensor] """ return self._sensors @sensors.setter def sensors(self, value): """ Sensor list belonging to the city objects cluster :param value: [Sensor] """ self._sensors = value