2010-02-09 5 views
8

कहें कि मेरे पास निम्न कोड है।इस raise कथन पर, पिलिंट त्रुटि E0702 क्यों देता है, कोई भी टाइप टाइप नहीं करता है?

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 कोई भी नहीं हो कर सकता है के बीच में होता है, और नहीं, मैं सिर्फ अपवाद नहीं उठा सकता, क्योंकि यह किसी अन्य धागे में होता है जिस पर प्रतिबंध है।

उत्तर

13

यह a known bug है। पिलिंट बहुत सारे प्रवाह-नियंत्रण में नहीं करता है।

7

सौभाग्य से आप pylint बता सकता है कि आप से बेहतर यह होता है पता है:

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

इस बीच "pylint: को निष्क्रिय-msg = E0702" पदावनत किया गया है (बस का उपयोग करें "pylint: अक्षम = E0702" के बजाय)। – antred