2015-03-31 11 views
10

के साथ कार्यों के लिए PyCharm getitem चेतावनी मुझे PyCharm से कोड निरीक्षण चेतावनियां मिल रही हैं। मैं तर्क समझता हूं, लेकिन मैं इसे ठीक करने के उचित तरीके से स्पष्ट नहीं हूं। xdata की एक numpy सरणी पार्स करने के लिएएरर

>> Expected type 'Sized', got 'int' instead (at line 3) 
>> Class 'int' does not define '__getitem__', so the '[]' operator cannot be used on its instances (at line 4) 

समारोह के प्रयोजन के निश्चित रूप से है: मैं 2 चेतावनी मिल

def get_ydata(xdata): 
    ydata = xdata ** 2 
    for i in range(len(ydata)): 
     print ydata[i] 
return ydata 

: मैं निम्न उदाहरण कार्य हो कहो। लेकिन PyCharm यह नहीं जानता है, इसलिए बिना किसी संकेत के यह मानता है कि xdata (और इसलिए ydata) एक पूर्णांक है।

इस चेतावनी को हल करने का उचित तरीका क्या है? मुझे ध्यान रखना चाहिए कि एक प्रकार की जांच लाइन जोड़ने से चेतावनी ठीक हो जाएगी। क्या यह इष्टतम समाधान है? उदाहरण के लिए:

if not type(ydata) is np.ndarray: 
    ydata = np.array(ydata) 

अन्त में, स्फिंक्स docstring जानकारी जोड़ने चेतावनी पर कोई असर दिखाई नहीं देता। (xdata str के रूप में निर्दिष्ट होने पर चेतावनी अभी भी 'int' को देखती है)। इसके अलावा पुनरावृत्ति से अधिक y सीधे निम्न त्रुटि में परिणाम है:

for y in ydata: 
... 
>> Expected 'collections.Iterable', got 'int' instead 
+0

आप क्यों नहीं बस से अधिक पुनरावृति नहीं है 'सीधे ydata'? साथ ही, ध्यान दें कि आप PyCharm को यह बताने के लिए स्फिंक्स मार्कअप का उपयोग कर सकते हैं कि पैरामीटर क्या हैं: https://www.jetbrains.com/pycharm/help/creating-documentation-comments.html – jonrsharpe

+1

शैली के लिए, मैं इंडेक्सिंग का उपयोग क्यों करता हूं आधारित दृष्टिकोण, बजाय ydata पर फिर से शुरू करने के बजाय। उस तरफ, मैंने अभी जांच की है और स्फिंक्स-आधारित डॉकस्ट्रिंग्स को चेतावनी पर कोई प्रभाव नहीं पड़ता है। उदाहरण के लिए, xdata को str के रूप में निर्दिष्ट करना, फिर भी उसी 'अपेक्षित int' त्रुटि में परिणाम होता है, इसलिए ऐसा लगता है कि इसे ध्यान में नहीं रखा जा रहा है। इसके अलावा, ydata पर सीधे पुनरावृत्ति केवल निम्न त्रुटि में परिणाम: "अपेक्षित 'संग्रह। इटेबल', इसके बजाय 'int' मिला"। मैं –

+0

के अनुसार अपना प्रश्न अपडेट करूँगा ध्यान रखें कि आपके विकल्पों में से एक इसे केवल अनदेखा करना है - यह केवल एक चेतावनी है। – jonrsharpe

उत्तर

4

Pycharm type hinting सुविधाओं है कि काम का हो सकता है।

उदाहरण के लिए इस मामले में, निम्नलिखित कोड त्रुटियों चले जाओ बनाता है:

import numpy as np 

def get_ydata(xdata): 
    ydata = xdata ** 2 # type: np.ndarray 
    for i in range(len(ydata)): 
     print(ydata[i]) 
    return ydata 
संबंधित मुद्दे