class Bool():
def __init__(self, mode):
self._mode = mode
def switch(self):
if self._mode is False:
raise Exception
self._mode = False
class Test():
def __init__(self):
self._lst = [False, True, False, True]
def __str__(self):
return "list: " + str(self._lst)
def normal(self):
for index, element in enumerate(self._lst):
try:
Bool(element).switch()
except Exception:
continue
我的代码的问题是法线方法似乎不起作用。它应该做的是通过从另一个类调用switch方法获取lst并将所有True的转换为False。如果元素为False,而不是引发任何异常,它应该跳过它并转到下一个元素。
t1 = Test()
print(t1)
list: [False, True, False, True]
t1.normal()
print(t1)
list: [False, True, False, True]
然而它应该是:
t1 = Test()
print(t1)
list: [False, True, False, True]
t1.normal()
print(t1)
list: [False, False, False, False]
答案 0 :(得分:2)
您必须更改_lst
中的值。此外,由于switch()
方法不返回任何内容,因此您应该存储Bool
的实例,调用其switch()
方法,然后将其分配给_lst
<中的相应元素/ p>
def normal(self):
for index, element in enumerate(self._lst):
try:
b = Bool(element) # Store instance
b.switch()
self._lst[index] = b._mode # Change the respective element
except Exception as e:
print e # Just for debug