| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 | 
class Device:    __slots__ = '_name', '_location', '_status'    def __init__(self, name, location, status='ON'):        self._name = name        self.location = location        self.status = status        @property    def name(self):        return self._name    @property    def location(self):        return self._location        @location.setter    def location(self, value):        self._location = value        @property    def status(self):        return self._status        @status.setter    def status(self, value):        self._status = value    def turn_on(self):        self.status = 'ON'    def turn_off(self):        self.status = 'OFF'class Light(Device):    __slots__ = '_brightness', '_color'    def __init__(self, name, location, brightness, color):        super().__init__(name, location)        self.brightness = brightness        self._color = color            @property    def brightness(self):        return self._brightness        @brightness.setter    def brightness(self, value):        self._brightness = value        @property    def color(self):        return self._colorclass Thermostat(Device):    __slots__ = '_current_temperature', '_target_temperature'    def __init__(self, name, location, current_temperature, target_temperature):        super().__init__(name, location)        self.current_temperature = current_temperature        self.target_temperature = target_temperature    @property    def current_temperature(self):        return self._current_temperature        @current_temperature.setter    def current_temperature(self, value):        self._current_temperature = value    @property    def target_temperature(self):        return self._target_temperature        @target_temperature.setter    def target_temperature(self, value):        self._target_temperature = valueclass SmartTV(Device):    __slots__ = '_channel'    def __init__(self, name, location, channel):        super().__init__(name, location)        self.channel = channel    @property    def channel(self):        return self._channel        @channel.setter    def channel(self, value):        self._channel = valuedef main():    '''    dev = Device('robot-bobot', 'Moscow', 'on')    print(dev.name)    light = Light('light-bobot', 'Moscow', 'on', 70, 'red')    print(light.name)    print(light.brightness)    print(light.color)    '''    device1 = Device('Устройство 1', 'Гостиная')    assert device1.name == 'Устройство 1'    assert device1._name == 'Устройство 1'    assert device1.location == 'Гостиная'    assert device1._location == 'Гостиная'    assert device1.status == 'ON'    assert device1._status == 'ON'    device1.turn_off()    assert device1.status == 'OFF'    device1.location = 'Кухня'    assert device1.location == 'Кухня'    assert device1._location == 'Кухня'    device1.turn_on()    assert device1.status == 'ON'    light1 = Light('Лампа', 'Гостиная', 50, 'белый')    light1.name == 'Лампа'    light1.location == 'Гостиная'    light1.status == 'ON'    light1.brightness == '50'    light1.color == 'белый'    light1.turn_off()    light1.status == 'OFF'    thermostat_1 = Thermostat('Термометр', 'Балкон', 10, 15)    thermostat_1.name == 'Термометр'    thermostat_1.location == 'Балкон'    thermostat_1.status == 'ON'    thermostat_1.current_temperature == 10    thermostat_1.target_temperature == 15    tv = SmartTV('Samsung', 'Спальня', 20)    tv.name == 'Термометр'    tv.location == 'Балкон'    tv.status == 'ON'    tv.channel == 20    print('GOOD')if __name__ == '__main__':    main()
 |