Tôi đã định nghĩa enum sau đây
from enum import Enum
class D(Enum):
x = 1
y = 2
print(D.x)
bây giờ giá trị được in là
D.x
thay vào đó tôi muốn giá trị của enum được in
1
Có thể làm gì để đạt được chức năng này?
Tôi đã định nghĩa enum sau đây
from enum import Enum
class D(Enum):
x = 1
y = 2
print(D.x)
bây giờ giá trị được in là
D.x
thay vào đó tôi muốn giá trị của enum được in
1
Có thể làm gì để đạt được chức năng này?
Câu trả lời:
Bạn đang in đối tượng enum . Sử dụng .value
thuộc tính nếu bạn chỉ muốn in:
print(D.x.value)
Xem các truy cập theo chương trình cho các thành viên liệt kê và các thuộc tính của họ phần :
Nếu bạn có một thành viên enum và cần tên hoặc giá trị của nó:
>>> >>> member = Color.red >>> member.name 'red' >>> member.value 1
Bạn có thể thêm một __str__
phương thức vào enum của mình, nếu tất cả những gì bạn muốn là cung cấp một biểu diễn chuỗi tùy chỉnh:
class D(Enum):
def __str__(self):
return str(self.value)
x = 1
y = 2
Bản giới thiệu:
>>> 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: ...
. Tôi nên thực hiện cách tiếp cận nào đối với số nguyên?
D.x
là đối tượng enum, D.x.value
là một giá trị nguyên. Nếu bạn phải có các giá trị enum hoạt động giống như số nguyên, hãy sử dụng IntEnum
kiểu , trong đó mỗi phần tử là một lớp con của int
và như vậy IntEnumD.x == 10
sẽ hoạt động.
def __eq__(self, other): return int(self.value) == other
và def __int__(self): return int(self.value)
nhưng tôi vẫn nghĩ rằng tôi phải sử dụng .value
trong các trường hợp khi tôi không sử dụng so sánh
__eq__
triển khai đó không hoạt động khi other
là một giá trị enum khác; D.x == D.y
, D.x.value == D.y.value
ví dụ như đúng, sẽ thất bại. Có vẻ như bạn muốn sử dụng IntEnum
thay vì Enum
ở đó.
Tôi đã triển khai quyền truy cập bằng cách sử dụng sau
class D(Enum):
x = 1
y = 2
def __str__(self):
return '%s' % self.value
bây giờ tôi có thể làm
print(D.x)
để có được 1
kết quả.
Bạn cũng có thể sử dụng self.name
trong trường hợp bạn muốn in x
thay vì 1
.
self._value_
? return str(self.value)
là đơn giản hơn.
self.value
hơn.
value
làm tên trên kiểu enum của mình).
Tôi tìm thấy trang này khi tìm kiếm để truy cập Enum
một chuỗi bằng cách sử dụng một chuỗi. Tôi biết đây không phải là những gì đang được hỏi trong câu hỏi cụ thể này nhưng tiêu đề 'gợi ý' nó.
Để có được một Enum bằng cách sử dụng Chuỗi, bạn có thể làm như sau:
from enum import Enum
class D(Enum):
x = 1
y = 2
print(D["x"]) # <D.x: 1>