2010-02-09 13 views
8

Supongo que tengo el siguiente código.¿Por qué Pylint da error E0702, levantando NoneType, en esta declaración de aumento?

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

Cuando ejecuto el código a través pylint, me sale el siguiente error:

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

Es esto un error en pylint? Es mi pildora demasiado vieja?

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

Nota: Sé que este código no tiene ningún sentido, se destila para sus huesos pelados para exponer el tema en cuestión, normalmente cosas que pasan entre la línea 2 y 3, que podría hacer foobar no haber ninguna, y no, no puedo simplemente lanzar una excepción allí, porque eso sucede en otro hilo que tiene restricciones.

Respuesta

13

Es a known bug. Pylint no hace mucha inferencia de control de flujo.

7

Por suerte se puede decir pylint que sabes mejor que lo hace:

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

Mientras tanto "pylint: desactivar-msg = E0702" ha quedado en desuso (sólo tiene que utilizar "pylint: disable = E0702" en su lugar). – antred

Cuestiones relacionadas