मैंने अभी पाइथन में Enum बेस क्लास के अस्तित्व की खोज की है और मैं कल्पना करने की कोशिश कर रहा हूं कि यह मेरे लिए उपयोगी कैसे हो सकता है।एक पायथन एनम के साथ एक स्ट्रिंग की तुलना कैसे करें?
चलो कहते हैं कि मैं एक यातायात प्रकाश स्थिति को परिभाषित करते हैं:
from enum import Enum, auto
class Signal(Enum):
red = auto()
green = auto()
orange = auto()
मान लीजिए कि मैं उदाहरण brain_detected_colour = "red"
के लिए मेरे कार्यक्रम में कुछ सबसिस्टम से जानकारी प्राप्त, एक स्ट्रिंग एक रंग नाम का प्रतिनिधित्व के रूप में, करते हैं।
मैं इस स्ट्रिंग की तुलना अपने ट्रैफिक लाइट सिग्नल से कैसे करूं?
जाहिर है, brain_detected_colour is Signal.red
False
है, क्योंकि Signal.red
एक स्ट्रिंग नहीं है।
Signal(brain_detected_colour) is Signal.red
ValueError: 'red' is not a valid Signal
के साथ विफल रहता है।
'brain'detected_colour में' is' का उपयोग करना Signal.red.name' जोखिम भरा है; यह '==' का उपयोग करना बेहतर होगा। – mwchase
@mwchase क्या आप समझा सकते हैं, ताकि मैं अपना जवाब संपादित कर सकूं और स्पष्टीकरण जोड़ूं? – bli
आप स्ट्रिंग इंटर्निंग पर भरोसा कर रहे हैं, अस्पष्ट कार्यान्वयन विवरण http://guilload.com/python-string-interning/, कभी भी 'is' का उपयोग न करें जब तक कि आपको वास्तव में वस्तुओं की पहचान की तुलना करने की आवश्यकता न हो –