2013-11-08 3 views
0

я получил следующую ошибкуAttributeError: объект «NoneType» не имеет атрибута «добавить»

AttributeError: 'NoneType' object has no attribute 'add' 

в то время как я попытался это.

not_yet_bought_set = set() 
. 
. 
. 
for value in set_dict.itervalues(): 
    for item in value: 
     not_yet_bought_set = not_yet_bought_set.add(item) 

Я dont't понимает, почему я получил эту ошибку, это потому, что я всегда not_yet_bought_set нового? Я делаю это, потому что когда я только делаю

not_yet_bought_set.add(item) 

там не будет всех предметов из всех значений. Я не знаю почему.

значение наборы и

not_yet_bought_set.union(value) 

также генерировать эту ошибку

Спасибо за любую помощь.

ответ

3
not_yet_bought_set.add(item) 

это вернет None и вы назначаете его not_yet_bought_set. Итак, not_yet_bought_set становится None сейчас. В следующий раз

not_yet_bought_set = not_yet_bought_set.add(item) 

выполняется, add будет вызван на None. Вот почему он терпит неудачу.

Чтобы исправить это, просто сделайте это. Не присваивайте это чему-либо.

not_yet_bought_set.add(item) 
1

set.add ничего не возвращает.

>>> s = set() 
>>> the_return_value_of_the_add = s.add(1) 
>>> the_return_value_of_the_add is None 
True 

Заменить следующие строки:

not_yet_bought_set = not_yet_bought_set.add(item) 

с:

not_yet_bought_set.add(item) 
Смежные вопросы