10

次のコードがあるとします。

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 でなくなる可能性があります。制限のある別のスレッドで発生するため、そこで例外を発生させます。

4

2 に答える 2

16

これは既知のバグです。Pylint はフロー制御の推論をあまり行いません。

于 2010-02-09T11:57:47.290 に答える
11

幸いなことに、あなたはそれよりもよく知っていることをピリントに伝えることができます:

def foo():
    foobar = None
    if foobar is not None:
        raise foobar  # pylint: disable-msg=E0702
于 2010-02-09T13:52:11.603 に答える