मै मैपी के साथ पाइथन 3.5 का उपयोग कर रहा हूं ताकि मेरी स्क्रिप्ट के लिए कुछ बुनियादी स्थैतिक जांच हो। हाल ही में मैंने ऑर्डर्ड डिक्ट को वापस करने के लिए कुछ तरीकों का पुन: उपयोग किया, लेकिन "टाइप 'ऑब्जेक्ट में भाग लिया गया है सबस्क्राइबबल नहीं है" त्रुटि, जब मैंने कुंजी और वैल्यू प्रकार निर्दिष्ट के साथ रिटर्न एनोटेशन का उपयोग करने का प्रयास किया।मैं माईपी प्रकार एनोटेशन के लिए ऑर्डर्ड डिक्ट के, वी प्रकार कैसे निर्दिष्ट करूं?
घटित उदाहरण:
#!/usr/bin/env python3.5
from collections import OrderedDict
# this works
def foo() -> OrderedDict:
result = OrderedDict() # type: OrderedDict[str, int]
result['foo'] = 123
return result
# this doesn't
def foo2() -> OrderedDict[str, int]:
result = OrderedDict() # type: OrderedDict[str, int]
result['foo'] = 123
return result
print(foo())
और यह अजगर उत्पादन जब यह चलती है:
Traceback (most recent call last):
File "./foo.py", line 12, in <module>
def foo2() -> OrderedDict[str, int]:
TypeError: 'type' object is not subscriptable
Mypy तथापि टिप्पणी में टाइप टिप्पणी के साथ कोई समस्या नहीं है और वास्तव में अगर मैं कोशिश चेतावनी देगा result[123] = 123
करने के लिए।
इसका कारण क्या है?
अब यह काम करता है (mypy संस्करण 0.501)। – max