Пример #1
0
def get_eakon_instance_by_model(model_name) -> HVAC:
    """
    A helper function to instantiate a new class using a model name.
    :param model_name:
    :return:
    """
    model_name = model_name.lower()
    class_name = model_name.capitalize()
    try:
        module_type = import_module(name=f"eakon.{model_name}")
        model_class = getattr(module_type, class_name)
        return ABC.register(type(class_name, (model_class, ), {}))()
    except (ModuleNotFoundError, TypeError) as exc:
        logging.debug("Exception was {}".format(exc))
        raise NotImplementedError(
            "No module {} implementing class {} was found. Model {} is unsupported."
            .format(model_name, class_name, model_name))
Пример #2
0
        price = 0
        if car.kilometers_since_break_change > 10000:
            # do work
            car.kilometers_since_break_change = 0
            price = 1000
        if self.next:
            return price + self.next.get_cost(car)
        return price


# This is the sender that will send messages to the handler.
class Garage:
    def __init__(self, maintenance):
        self.maintenance = maintenance

    def get_cost(self, car):
        return self.maintenance.get_cost(car)


# Register classes
ABC.register(ChangeOil)
ABC.register(ChangeBreak)

# Example of the chain starting.
car = Car(6000, 15000)
maintenance = ChangeOil()
maintenance.set_next(ChangeBreak())
garage = Garage(maintenance)

print(garage.get_cost(car))