Почему Pylint выдает ошибку E0702, вызывающую NoneType, в этом операторе поднятия? - PullRequest
9 голосов
/ 09 февраля 2010

Скажите, у меня есть следующий код.

def foo():
    foobar = None
    if foobar is not None:
        raise foobar

Когда я запускаю этот код через Pylint, я получаю следующую ошибку:

E0702:4:foo: Raising NoneType while only classes, instances or string are allowed

Это ошибка в Pylint? Мой пилинт слишком старый?

pylint 0.18.0, 
astng 0.19.1, common 0.45.0
Python 2.5.1 (r251:54863, Aug 25 2008, 09:23:26) 

Примечание: я знаю, что этот код не имеет никакого смысла, он перебирается на кусочки, чтобы раскрыть проблему, обычно между строк 2 и 3 происходят вещи, которые могут сделать foobar не равным None, и нет здесь не возникает исключение, потому что это происходит в другом потоке, который имеет ограничения.

Ответы [ 2 ]

13 голосов
/ 09 февраля 2010

Это известная ошибка . Pylint не делает много выводов контроля потока.

8 голосов
/ 09 февраля 2010

К счастью, вы можете сказать Pylint, что вы знаете лучше, чем он:

def foo():
    foobar = None
    if foobar is not None:
        raise foobar  # pylint: disable-msg=E0702
...