2013-09-02 2 views
3

У меня есть этот класс:функция класса не возвращает правильное значение

class test(object): 
    def __init__(self, s): 
     self.s = s 
    def getS(self): 
     return self.s 

Мне нужно генерировать 5 экземпляров этого класса, и только один экземпляр будет иметь переменную s со значением, равным верно.

tests = [test(True) if i==sys.argv[1] else test(False) for i in range(5)] 

Затем я попытался напечатать значения.

for i in tests: 
    print i.getS() 

Выход:

False 
False 
False 
False 
False 

В случае, если не один из стоимости равна Правда?

+4

'sys.argv' - это список строк, ни один из его элементов никогда не будет целым числом. (Если вы его вручную не модифицируете). Попробуйте 'if i == int (sys.argv [1])'. – millimoose

ответ

2

Попробуйте это, это немного проще. Кроме того, используйте xrange, если используете Python 2.x, или range, если используете Python 3.x.

tests = [test(i == int(sys.argv[1])) for i in xrange(5)] 

Ваш код по существу правильно - вы просто забыли преобразовать в int командной строки аргумента.

Смежные вопросы