मेरे पास enum परिभाषित है
from enum import Enum
class D(Enum):
x = 1
y = 2
print(D.x)
अब मुद्रित मूल्य है
D.x
इसके बजाय मैं चाहता था कि enum का मूल्य प्रिंट हो
1
इस कार्यक्षमता को प्राप्त करने के लिए क्या किया जा सकता है?
मेरे पास enum परिभाषित है
from enum import Enum
class D(Enum):
x = 1
y = 2
print(D.x)
अब मुद्रित मूल्य है
D.x
इसके बजाय मैं चाहता था कि enum का मूल्य प्रिंट हो
1
इस कार्यक्षमता को प्राप्त करने के लिए क्या किया जा सकता है?
जवाबों:
आप एनम ऑब्जेक्ट को प्रिंट कर रहे हैं । .valueविशेषता का उपयोग करें यदि आप चाहते थे कि बस प्रिंट करें:
print(D.x.value)
गणन सदस्यों और उनके गुण अनुभाग के लिए प्रोग्रामेटिक पहुँच देखें :
यदि आपके पास कोई एनम सदस्य है और उसके नाम या मूल्य की आवश्यकता है:
>>> >>> member = Color.red >>> member.name 'red' >>> member.value 1
__str__यदि आप चाहते थे कि आप एक कस्टम स्ट्रिंग प्रतिनिधित्व प्रदान करें, तो आप अपने एनम में एक विधि जोड़ सकते हैं :
class D(Enum):
def __str__(self):
return str(self.value)
x = 1
y = 2
डेमो:
>>> from enum import Enum
>>> class D(Enum):
... def __str__(self):
... return str(self.value)
... x = 1
... y = 2
...
>>> D.x
<D.x: 1>
>>> print(D.x)
1
if D.x == 10: ...। पूर्णांकों के लिए मुझे क्या दृष्टिकोण रखना चाहिए?
D.xएनम ऑब्जेक्ट है, D.x.valueएक पूर्णांक मान है। यदि आपके पास एनुमर मान पूर्णांक की तरह काम करने चाहिए, तो उस IntEnumप्रकार का उपयोग करें , जहां प्रत्येक तत्व उप-वर्ग है intऔर इसलिए IntEnumD.x == 10काम करेगा।
def __eq__(self, other): return int(self.value) == otherऔर def __int__(self): return int(self.value)फिर भी मुझे लगता है कि मुझे उन .valueमामलों पर उपयोग करना होगा जब मैं तुलना नहीं करता हूं
__eq__लागू नहीं होता otherहै जब एक और एनम मूल्य होता है; D.x == D.y, जहां D.x.value == D.y.valueसही होगा, उदाहरण के लिए विफल होगा। ऐसा लगता है कि आप वहां के IntEnumबजाय उपयोग करना चाहते हैं Enum।
मैंने निम्नलिखित का उपयोग करके पहुंच को लागू किया
class D(Enum):
x = 1
y = 2
def __str__(self):
return '%s' % self.value
अब मैं बस कर सकता हूं
print(D.x)1परिणाम के रूप में पाने के लिए ।
तुम भी उपयोग कर सकते हैं self.nameमामले में आप प्रिंट करना चाहता था xके बजाय 1।
self._value_? return str(self.value)अधिक सीधा है।
self.valueक्लीनर हैं।
valueअपने एनम प्रकार पर एक नाम के रूप में उपयोग कर सकें )।
Enumस्ट्रिंग का उपयोग करके खोज करने पर मुझे यह पृष्ठ मिला । मुझे पता है कि यह इस कणिकीय प्रश्न में नहीं पूछा जा रहा है लेकिन शीर्षक इसे 'सुझाव' देता है।
स्ट्रिंग का उपयोग करके एनम प्राप्त करने के लिए आप निम्नलिखित कार्य कर सकते हैं:
from enum import Enum
class D(Enum):
x = 1
y = 2
print(D["x"]) # <D.x: 1>