class ModeBool():
def __init__(self, mode):
self.mode = mode
class IndexOfBool():
def __init__(self, lst):
'''
Creates a list of True's as it's elements based on the given number.
>>> i1 = IndexOfBool(5)
Should create -> [True, True, True, True, True]
'''
self.lst = [ModeBool(True) for i in range(lst)]
def bool_true(self):
new_lst = []
for index, element in enumerate(self.lst):
if element is True:
new_lst.append(index)
return new_lst
但是,当我致电bool_true
时,它不会返回正确的结果:
i1 = IndexOfBool(10)
i1.bool_true()
[]
应该返回的内容:
i1 = IndexOfBool(10)
i1.bool_true()
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
不太确定为什么它不会返回预期的内容。另外,如果我要将ModeBool(True)
替换为ModeBool(False)
,则应该创建一个False
列表。如果我在bool_true
列表中调用False
而不是return []
。
答案 0 :(得分:3)
这一行
self.lst = [ModeBool(True) for i in range(lst)]
应该是
self.lst = [ModeBool(True).mode for i in range(lst)]
答案 1 :(得分:0)
element is True
false ,因为每个元素都是使用ModeBool(True)
创建的。
将其添加到ModeBool
,不要与is
进行比较:
def __bool__(self):
return self.mode
对于python2,请使用__nonzero__