У вас есть несколько вариантов:
Один, используя словарь. Так, self.switches
будет выглядеть примерно так:
self.switches = {
1: True,
2: False,
3: True,
4: True
}
Чтобы получить доступ к значениям в вашей flip
функции, вы могли бы сделать что-то вроде этого. Обратите внимание, что в Python, вам не нужно говорить if value == True
, скорее, просто использовать само логическое значение: if value
:
def flip(self, num):
try:
if self.switches[num]: # On
print("Turning switch off!")
self.switches[num] = False
else: # Off
print("Turning switch on!")
self.switches[num] = True
except KeyError: # No switch in dictionary!
print("Switch does not exist!")
В качестве альтернативы, если вы хотите, чтобы добавить дополнительные свойства к переключателям, вы может создать класс:
class Switch(object):
def __init__(self):
self.on = True # default to on
self.switches
бы список Switch
объектов:
def flip(self, num):
if num > len(self.switches):
print("Switch does not exist!")
return
if self.switches[num].on: # On
print("Turning switch off!")
self.switches[num].on = False
else:
print("Turning switch on!")
self.switches[num].on = True
Edit: В ответ на Комментарии Giulio об использовании списка логических значений:
Да, такая структура данных будет проще для этого использования. Однако, учитывая, OP, вы делаете класс, я предполагаю, что для вашего коммутатора будет больше, чем включение и выключение переключателей - в противном случае ваше использование класса в действительности не обязательно. Список логических значений - очень хрупкий способ представления данных, которые вы хотите.Как только вам потребуются дополнительные функции, вам придется переписать свой код; например, если вы хотите назвать коммутаторы чем-то другим, кроме последовательных целых чисел, или дать им цвета или, возможно, удалить их с доски целиком.
Я думаю, что вы хотите словарь. –
Нет, вам нужен [список] (http://docs.python.org/2/tutorial/introduction.html#lists). – user2357112
Подумайте о том, что 'num' в вашем коде. В какой-то момент это, кажется, номер переключателя, который вы пытаетесь перевернуть, но в другой момент вы спрашиваете, является ли оно «Истиной». –