Задание
Построить класс. РадЛампочек (LampRow), который
храни состояние ряда из 8 лампочек в виде символьной
строки. Цифра 0 обозначает выключенную лампочку,
цифра 1- Включенную.
Свойство ѕtаtе скрывает внутреннюю переменную
_state, которая хранит состояние лампочек. При записи
Нового значения проверяется, что длина строки
Состояния равна 8, иначе записываются все нули.
Метод show выводит на экран состояние лампочек,
обозначая выключенную лампочку как минус, а
включённую - как '.
Пример:
lamps = LapRow()
laps.show()
laps.state = "10101010
print( lamps.state )
lamps.show()
10101010
```python
class LampRow:
def __init__(self):
self._state = "00000000" # Изначально все лампочки выключены
@property
def state(self):
return self._state
@state.setter
def state(self, new_state):
if len(new_state) == 8: # Проверяем, что длина строки состояния равна 8
self._state = new_state
else:
self._state = "00000000" # Если длина не равна 8, записываем все нули
def show(self):
for lamp_state in self._state:
if lamp_state == "0":
print("-", end=" ") # Если лампочка выключена, выводим "-"
elif lamp_state == "1":
print(".", end=" ") # Если лампочка включена, выводим "."
print() # Переходим на новую строку для следующего вывода
```
Теперь давайте подробно разберем эту реализацию:
1. В начале определяется класс "LampRow", который будет представлять ряд из 8 лампочек.
2. В конструкторе "__init__" устанавливается изначальное состояние всех лампочек в виде строки "00000000", то есть все лампочки выключены.
3. Затем определяется свойство "state", с помощью декораторов "@property" и "@state.setter". Свойство "state" позволяет получать состояние лампочек и устанавливать новое состояние, при этом выполняется проверка на длину строки состояния.
4. Метод "show" используется для вывода на экран текущего состояния лампочек. Внутри метода происходит итерация по каждому символу в строке состояния и вывод соответствующего символа на экран ("-"" для выключенной лампочки и "." для включенной лампочки). После вывода всех символов строки состояния переходим на новую строку для следующего вывода.
5. В основной программе можно создать экземпляр класса "LampRow" с помощью оператора "lamps = LampRow()".
6. После создания экземпляра можно вызвать метод "show" с помощью оператора "lamps.show()", чтобы вывести текущее состояние лампочек (изначально должны быть выключены).
7. Далее можно установить новое состояние лампочек, присвоив значение свойству "state" с помощью оператора "lamps.state = "10101010"".
8. После установки нового состояния можно вывести его на экран с помощью оператора "print(lamps.state)" (должно вывести "10101010").
9. И, наконец, можно вызвать метод "show" еще раз, чтобы увидеть текущее состояние лампочек после установки нового ("10101010"). Вывод должен быть аналогичным предыдущему шагу.