मैं स्थिर कारखाने विधि के वापसी मूल्य के प्रकार को निर्दिष्ट करने के लिए Python function annotations का उपयोग करने जा रहा था। मैं समझता हूं कि एनोटेशन के लिए यह one of the desired use cases है।युक्त श्रेणी का नाम रिटर्न वैल्यू फ़ंक्शन एनोटेशन के रूप में क्यों नहीं पहचाना जाता है?
class Trie:
@staticmethod
def from_mapping(mapping) -> Trie:
# docstrings and initialization ommitted
trie = Trie()
return trie
PEP 3107 कहा गया है कि:
समारोह एनोटेशन संकलन समय में आयोजित एक समारोह के विभिन्न भागों के साथ मनमाना अजगर भाव जोड़ का एक तरीका से ज्यादा कुछ नहीं कर रहे हैं।
Trie
पायथन में मान्य अभिव्यक्ति है, है ना? अजगर सहमत नहीं है या बल्कि, नाम नहीं मिल सकता है:
def from_mapping(mapping) -> Trie:
NameError: name 'Trie' is not defined
यह ध्यान देने योग्य है कि इस त्रुटि नहीं होता है लायक है अगर एक मौलिक प्रकार (जैसे object
या int
के रूप में) या एक मानक पुस्तकालय प्रकार (जैसे collections.deque
) निर्दिष्ट है।
इस त्रुटि का कारण क्या है और मैं इसे कैसे ठीक कर सकता हूं?
संभावित डुप्लिकेट [मैं कैसे निर्दिष्ट कर सकता है कि एक विधि की वापसी प्रकार वर्ग के रूप में एक ही है खुद पाइथन में?] (https://stackoverflow.com/questions/33533148/how-do-i-specify-that-the-return-type-of-a-method-is-the-same-as-the- कक्षा-उपन्यास) –