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 .valuethuộ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.xlà đối tượng enum, D.x.valuelà 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 IntEnumkiểu , trong đó mỗi phần tử là một lớp con của intvà như vậy IntEnumD.x == 10sẽ hoạt động.
def __eq__(self, other): return int(self.value) == othervà def __int__(self): return int(self.value)nhưng tôi vẫn nghĩ rằng tôi phải sử dụng .valuetrong 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 otherlà một giá trị enum khác; D.x == D.y, D.x.value == D.y.valueví dụ như đúng, sẽ thất bại. Có vẻ như bạn muốn sử dụng IntEnumthay 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 1kết quả.
Bạn cũng có thể sử dụng self.nametrong trường hợp bạn muốn in xthay vì 1.
self._value_? return str(self.value)là đơn giản hơn.
self.valuehơn.
valuelà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 Enummộ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>