मेरे पास 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>