2015-11-17 2 views
0

Я создал класс, и я уточнил функцию добавления, но по какой-то причине он работает неправильно. Это то, что у меня есть:iadd в классе python

def __iadd__(self,thing): 

    try: 
     tester=True 
     for y in thing: 
      if type(y) != type('f'): 
       tester=False 
     for j in thing: 
      self.listt.append(j) 
     return self 
    except(tester==False): 
     return ValueError 

Всякий раз, когда я делаю:

f=class('ab') 

f += [4] 

предполагается вернуть ValueError, потому что я добавляю что-то, что не является строкой, но по какой-то причине он прилагая Int хотя и не предполагалось.

+2

Вы используете неправильный блок 'try/except'. если вы хотите, чтобы он попал в блок исключений, вам нужно «поднять» ошибку –

+0

all 'except (tester == False):' собирается дать вам, это 'catching классы, которые не наследуются от BaseException, недопустимы 'если вы когда-нибудь создадите исключение – njzk2

ответ

2
def __iadd__(self, thing): 
    for y in thing: 
     if not isinstance(y, str): 
      raise ValueError 
    for j in thing: 
     self.listt.append(j) 
    return self 
Смежные вопросы