मैंने देखा कि आजकल कई पुस्तकालय पैरामीटर के लिए एनम-प्रकार चर पर तारों के उपयोग को प्राथमिकता देते हैं।फ़ंक्शन में पैरामीटर के रूप में एनम बनाम स्ट्रिंग
जहां लोग पहले enums का उपयोग करेंगे, उदा। शुक्रवार के लिए dateutil.rrule.FR, ऐसा लगता है कि यह स्ट्रिंग का उपयोग करने के लिए स्थानांतरित हो गया है (उदा। 'एफआरआई')।
numpy (या उस बात के लिए पांडा) में एक ही है, जहां उदाहरण के लिए searchsorted तार के उपयोग करता है (जैसे पक्ष = 'छोड़', या पक्ष = 'सही') के बजाय एक परिभाषित enum से। संदेह से बचने के लिए, अजगर 3.4 से पहले यह आसानी से इस तरह के रूप में एक enum के रूप में लागू किया जा सकता था:
class SIDE:
RIGHT = 0
LEFT = 1
और enums प्रकार चर के फायदे स्पष्ट हैं: आपको एक त्रुटि को ऊपर उठाने के बिना उन्हें गलत लिखा नहीं कर सकते, वे आईडीई आदि के लिए उचित समर्थन प्रदान करते हैं।
तो एनम प्रकारों पर चिपकने के बजाय स्ट्रिंग का उपयोग क्यों करें? क्या यह प्रोग्राम को उपयोगकर्ता त्रुटियों के लिए अधिक प्रवण नहीं करता है? यह enums बनाने के समान नहीं है - अगर कुछ भी उन्हें थोड़ा अधिक कुशल होना चाहिए। तो इस प्रतिमान शिफ्ट कब और क्यों हुआ?