Saya telah mengikuti enum yang ditentukan
from enum import Enum
class D(Enum):
x = 1
y = 2
print(D.x)
sekarang nilai yang dicetak adalah
D.x
sebagai gantinya saya ingin nilai enum dicetak
1
Apa yang dapat dilakukan untuk mencapai fungsi ini?
python
python-3.x
enums
python-3.4
Vaibhav Mishra
sumber
sumber
Jawaban:
Anda sedang mencetak objek enum . Gunakan
.value
atribut jika Anda hanya ingin mencetaknya:Lihat akses program ke anggota pencacahan dan atribut mereka bagian :
Anda dapat menambahkan
__str__
metode ke enum Anda, jika yang Anda inginkan hanyalah memberikan representasi string khusus:Demo:
sumber
if D.x == 10: ...
. Pendekatan apa yang harus saya ambil untuk bilangan bulat?D.x
adalah objek enum,D.x.value
adalah nilai integer. Jika Anda harus memiliki nilai enum bertindak seperti bilangan bulat, gunakanIntEnum
tipe , di mana setiap elemen adalah subkelasint
danIntEnumD.x == 10
akan berfungsi.def __eq__(self, other): return int(self.value) == other
dandef __int__(self): return int(self.value)
tapi tetap saya rasa saya harus menggunakan.value
kasus-kasus ketika saya tidak menggunakan pembanding__eq__
implementasi itu tidak bekerja ketikaother
ada nilai enum lain;D.x == D.y
, di manaD.x.value == D.y.value
benar, akan gagal misalnya. Sepertinya Anda ingin menggunakan,IntEnum
bukan diEnum
sana.Saya menerapkan akses menggunakan berikut ini
sekarang saya bisa melakukannya
print(D.x)
untuk mendapatkan1
hasilnya.Anda juga dapat menggunakan
self.name
jika Anda ingin mencetakx
daripada1
.sumber
self._value_
?return str(self.value)
lebih mudah.self.value
lebih bersih.value
sebagai nama pada tipe enum Anda).Saya menemukan halaman ini ketika mencari untuk mengakses
Enum
menggunakan string. Saya tahu ini bukan yang ditanyakan dalam pertanyaan khusus ini, tetapi judulnya memang 'menyarankan'.Untuk mendapatkan Enum menggunakan String, Anda dapat melakukan hal berikut:
sumber