Nhập gợi ý enums vào python #
Sử dụng lớp liệt kê để nhập gợi ý một enum trong Python, ví dụ: >>> type[Weekday.MONDAY]
>>> isinstance[Weekday.FRIDAY, Weekday]
True
0. Sau đó, bạn có thể truy cập bất kỳ thành viên nào của enum trong phần thân của chức năng mà không nhận được cảnh báo.
Copied!
from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Sizes]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Chúng tôi đã sử dụng lớp liệt kê
>>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True1 để gõ gợi ý một enum.
Một cách tiếp cận khác là sử dụng loại
>>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True2 để chỉ định rằng đối số hàm có thể là một trong những thành viên trong enum.
Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Gợi ý loại theo nghĩa đen có thể được sử dụng để chỉ ra các trình kiểm tra loại rằng tham số hàm có giá trị bằng với chữ được cung cấp [hoặc một trong một số chữ như trong ví dụ].
Hành tinh¶
Nếu
40 hoặcCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
41 được xác định, giá trị của thành viên ENUM sẽ được chuyển sang các phương pháp đó:Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Thời gian
Một ví dụ để hiển thị thuộc tính
39 đang sử dụng:Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
Phân lớp enumtype¶
from enum import Enum
from typing import Literal
class Color[Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
def some_function[some_color: Literal[Color.RED, Color.BLUE]] -> None:
pass
Mặc dù hầu hết các nhu cầu enum có thể được đáp ứng bằng cách tùy chỉnh các lớp con ____993, với các trình trang trí lớp hoặc các chức năng tùy chỉnh,
from enum import Enum
from typing import Literal
class Color[Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
def some_function[some_color: Literal[Color.RED, Color.BLUE]] -> None:
pass
04 có thể được phân lớp để cung cấp trải nghiệm enum khác.some_color: Color
Bạn có thể cố gắng sử dụng một tùy chọn với loại gợi ý theo nghĩa đen.
Từ tài liệu PEP8 chính thức, chúng tôi biết rằng:
Hành tinh¶
Chúng hữu ích nhất khi bạn có một biến có thể lấy một trong những lựa chọn giá trị hạn chế. Ví dụ, những ngày trong tuần:
>>> from enum import Enum >>> class Weekday[Enum]: ... MONDAY = 1 ... TUESDAY = 2 ... WEDNESDAY = 3 ... THURSDAY = 4 ... FRIDAY = 5 ... SATURDAY = 6 ... SUNDAY = 7
Hoặc có lẽ các màu chính RGB:
>>> from enum import Enum >>> class Color[Enum]: ... RED = 1 ... GREEN = 2 ... BLUE = 3
Như bạn có thể thấy, việc tạo một
>>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True3 cũng đơn giản như viết một lớp kế thừa từ chính
>>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True3.
Ghi chú
Trường hợp của các thành viên enum
Bởi vì các enum được sử dụng để đại diện cho các hằng số, chúng tôi khuyên bạn nên sử dụng tên Upper_case cho các thành viên và sẽ sử dụng kiểu đó trong các ví dụ của chúng tôi.
Tùy thuộc vào bản chất của enum, giá trị của thành viên có thể hoặc không quan trọng, nhưng bằng cách nào đó, giá trị đó có thể được sử dụng để có được thành viên tương ứng:
>>> Weekday[3]
Như bạn có thể thấy,
>>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True4 của một thành viên hiển thị tên enum, tên thành viên và giá trị.
>>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True8 của một thành viên chỉ hiển thị tên enum và tên thành viên:
>>> print[Weekday.THURSDAY] Weekday.THURSDAY
Loại thành viên liệt kê là enum mà nó thuộc về:
>>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True
Các thành viên Enum có một thuộc tính chỉ chứa
>>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True9 của họ:
0Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Tương tự như vậy, họ có một thuộc tính cho
00 của họ:Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
1Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Không giống như nhiều ngôn ngữ coi việc liệt kê chỉ là cặp tên/giá trị, các enum Python có thể có thêm hành vi. Ví dụ:
01 có hai phương pháp để trả lại vào ngày trong tuần:Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
02 vàCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
03. Sự khác biệt là một trong số họ tính từ 0-6 và cái còn lại từ 1-7. Thay vì theo dõi chính mình, chúng ta có thể thêm một phương thức vào ____104 để trích xuất ngày từ phiên bảnCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
05 và trả về thành viên enum phù hợp:Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
2Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Enum hoàn chỉnh ____104 bây giờ trông như thế này:
3Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Bây giờ chúng ta có thể tìm hiểu xem hôm nay là gì! Quan sát:
4Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Tất nhiên, nếu bạn đang đọc điều này vào một ngày khác, bạn sẽ thấy ngày hôm đó.
Enum
04 này là tuyệt vời nếu biến của chúng tôi chỉ cần một ngày, nhưng nếu chúng ta cần một số thì sao? Có thể chúng tôi viết một chức năng để vẽ các công việc trong một tuần và không muốn sử dụngCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
08 - chúng tôi có thể sử dụng một loạiCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
>>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True3 khác nhau:
5Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Chúng tôi đã thay đổi hai điều: Chúng tôi được thừa hưởng từ
10 và các giá trị đều là sức mạnh của 2.Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Giống như
04 ban đầu ở trên, chúng ta có thể có một lựa chọn duy nhất:Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
6Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Nhưng
10 cũng cho phép chúng tôi kết hợp một số thành viên thành một biến duy nhất:Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
7Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Bạn thậm chí có thể lặp lại một biến
10:Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
8Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Được rồi, hãy để một số công việc được thiết lập:
9Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Và một chức năng để hiển thị các công việc cho một ngày nhất định:
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
0Trong trường hợp các giá trị thực tế của các thành viên không quan trọng, bạn có thể tiết kiệm cho mình một số công việc và sử dụng
14 cho các giá trị:Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
1Truy cập chương trình vào các thành viên bảng liệt kê và các thuộc tính của họ Jo
Đôi khi, nó rất hữu ích để truy cập các thành viên trong các lập trình theo chương trình [nghĩa là các tình huống trong đó
15 won đã làm vì màu chính xác không được biết đến trong thời gian viết chương trình].Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
>>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True3 cho phép truy cập như vậy:
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
2Nếu bạn muốn truy cập các thành viên Enum theo tên, hãy sử dụng quyền truy cập mục:
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
3Nếu bạn có thành viên Enum và cần
>>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True9 hoặc
00:Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
4Sao chép các thành viên và giá trị enum
Có hai thành viên enum có cùng tên là không hợp lệ:
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
5Tuy nhiên, một thành viên enum có thể có các tên khác được liên kết với nó. Cho hai mục
19 vàCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
20 có cùng giá trị [vàCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
19 được xác định đầu tiên],Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
20 là bí danh cho thành viênCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
19. Tra cứu giá trị của giá trị củaCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
19 sẽ trả về thành viênCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
19. Tra cứu tên củaCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
19 sẽ trả lại thành viênCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
19. Tra cứu tên củaCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
20 cũng sẽ trả về thành viênCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
19:Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
6Ghi chú
Trường hợp của các thành viên enum
Bởi vì các enum được sử dụng để đại diện cho các hằng số, chúng tôi khuyên bạn nên sử dụng tên Upper_case cho các thành viên và sẽ sử dụng kiểu đó trong các ví dụ của chúng tôi.
Tùy thuộc vào bản chất của enum, giá trị của thành viên có thể hoặc không quan trọng, nhưng bằng cách nào đó, giá trị đó có thể được sử dụng để có được thành viên tương ứng:
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
7Như bạn có thể thấy, >>> type[Weekday.MONDAY]
>>> isinstance[Weekday.FRIDAY, Weekday]
True
4 của một thành viên hiển thị tên enum, tên thành viên và giá trị. >>> type[Weekday.MONDAY]
>>> isinstance[Weekday.FRIDAY, Weekday]
True
8 của một thành viên chỉ hiển thị tên enum và tên thành viên:
Loại thành viên liệt kê là enum mà nó thuộc về:
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
8Các thành viên Enum có một thuộc tính chỉ chứa
>>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True9 của họ:
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
9Ghi chú
Tương tự như vậy, họ có một thuộc tính cho
00 của họ:Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Không giống như nhiều ngôn ngữ coi việc liệt kê chỉ là cặp tên/giá trị, các enum Python có thể có thêm hành vi. Ví dụ: Copied!
from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
01 có hai phương pháp để trả lại vào ngày trong tuần: Copied!
from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
02 và Copied!
from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
03. Sự khác biệt là một trong số họ tính từ 0-6 và cái còn lại từ 1-7. Thay vì theo dõi chính mình, chúng ta có thể thêm một phương thức vào ____104 để trích xuất ngày từ phiên bản Copied!
from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
05 và trả về thành viên enum phù hợp:
Copied!
from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
Copied!
from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
Copied!
from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
Copied!
from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
Enum hoàn chỉnh ____104 bây giờ trông như thế này:
from enum import Enum
from typing import Literal
class Color[Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
def some_function[some_color: Literal[Color.RED, Color.BLUE]] -> None:
pass
0Bây giờ chúng ta có thể tìm hiểu xem hôm nay là gì! Quan sát:
from enum import Enum
from typing import Literal
class Color[Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
def some_function[some_color: Literal[Color.RED, Color.BLUE]] -> None:
pass
1Tất nhiên, nếu bạn đang đọc điều này vào một ngày khác, bạn sẽ thấy ngày hôm đó.
from enum import Enum
from typing import Literal
class Color[Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
def some_function[some_color: Literal[Color.RED, Color.BLUE]] -> None:
pass
2Enum Copied!
from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
04 này là tuyệt vời nếu biến của chúng tôi chỉ cần một ngày, nhưng nếu chúng ta cần một số thì sao? Có thể chúng tôi viết một chức năng để vẽ các công việc trong một tuần và không muốn sử dụng Copied!
from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
08 - chúng tôi có thể sử dụng một loại >>> type[Weekday.MONDAY]
>>> isinstance[Weekday.FRIDAY, Weekday]
True
3 khác nhau:
Copied!
from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
Copied!
from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
Chúng tôi đã thay đổi hai điều: Chúng tôi được thừa hưởng từ
10 và các giá trị đều là sức mạnh của 2.Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
from enum import Enum
from typing import Literal
class Color[Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
def some_function[some_color: Literal[Color.RED, Color.BLUE]] -> None:
pass
3So sánh được đặt hàng giữa các giá trị liệt kê không được hỗ trợ. Các thành viên enum không phải là số nguyên [nhưng xem intenum bên dưới]:
from enum import Enum
from typing import Literal
class Color[Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
def some_function[some_color: Literal[Color.RED, Color.BLUE]] -> None:
pass
4So sánh bình đẳng được xác định mặc dù:
from enum import Enum
from typing import Literal
class Color[Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
def some_function[some_color: Literal[Color.RED, Color.BLUE]] -> None:
pass
5So sánh với các giá trị không kích thích sẽ luôn so sánh không bằng nhau [một lần nữa,
36 được thiết kế rõ ràng để hoạt động khác nhau, xem bên dưới]:Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
from enum import Enum
from typing import Literal
class Color[Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
def some_function[some_color: Literal[Color.RED, Color.BLUE]] -> None:
pass
6Các thành viên được phép và các thuộc tính của bảng liệt kê Jo
Hầu hết các ví dụ trên sử dụng số nguyên cho các giá trị liệt kê. Sử dụng số nguyên ngắn và tiện dụng [và được cung cấp theo mặc định bởi API chức năng], nhưng không được thực thi nghiêm ngặt. Trong phần lớn các trường hợp sử dụng, người ta không quan tâm đến giá trị thực tế của một liệt kê là gì. Nhưng nếu giá trị là quan trọng, bảng liệt kê có thể có các giá trị tùy ý.
Các bảng liệt kê là các lớp Python, và có thể có các phương pháp và phương pháp đặc biệt như bình thường. Nếu chúng ta có sự liệt kê này:
from enum import Enum
from typing import Literal
class Color[Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
def some_function[some_color: Literal[Color.RED, Color.BLUE]] -> None:
pass
7Then:
from enum import Enum
from typing import Literal
class Color[Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
def some_function[some_color: Literal[Color.RED, Color.BLUE]] -> None:
pass
8Các quy tắc cho những gì được cho phép như sau: các tên bắt đầu và kết thúc với một dấu gạch dưới được bảo lưu bởi enum và không thể được sử dụng; Tất cả các thuộc tính khác được xác định trong một bảng liệt kê sẽ trở thành thành viên của liệt kê này, ngoại trừ các phương pháp đặc biệt [
37,Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
38, v.v.], các mô tả [Phương pháp cũng là mô tả] và tên biến được liệt kê trongCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
39.Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Lưu ý: Nếu liệt kê của bạn xác định
40 và/hoặcCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
41 thì bất kỳ giá trị nào được trao cho thành viên ENUM sẽ được chuyển vào các phương thức đó. Xem hành tinh để biết một ví dụ.Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Các lớp con enum bị hạn chế
Một lớp
>>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True3 mới phải có một lớp enum cơ sở, tối đa một loại dữ liệu cụ thể và nhiều lớp mixin dựa trên ____ 143 khi cần thiết. Thứ tự của các lớp cơ sở này là:
from enum import Enum
from typing import Literal
class Color[Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
def some_function[some_color: Literal[Color.RED, Color.BLUE]] -> None:
pass
9Ngoài ra, phân lớp một liệt kê chỉ được phép nếu việc liệt kê không xác định bất kỳ thành viên nào. Vì vậy, điều này bị cấm:
some_color: Color
0Nhưng điều này được cho phép:
some_color: Color
1Cho phép phân lớp các enum xác định các thành viên sẽ dẫn đến vi phạm một số bất biến quan trọng của các loại và trường hợp. Mặt khác, thật hợp lý khi cho phép chia sẻ một số hành vi phổ biến giữa một nhóm các liệt kê. [Xem đặt hàng cho một ví dụ.]
Nước ngâm
Tái lập có thể được ngâm và không được giải thích:
some_color: Color
2Các hạn chế thông thường đối với Pickling áp dụng: Các enum có thể chọn phải được xác định ở cấp cao nhất của một mô -đun, vì việc không được giải thích đòi hỏi chúng phải được nhập từ mô -đun đó.
Ghi chú
Với giao thức Pickle Phiên bản 4, có thể dễ dàng pickle enum lồng nhau trong các lớp khác.
Có thể sửa đổi cách các thành viên enum được ngâm/không được giải thích bằng cách xác định
44 trong lớp liệt kê.Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
API chức năng
Lớp
>>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True3 có thể gọi được, cung cấp API chức năng sau:
some_color: Color
3Các ngữ nghĩa của API này giống với
46. Đối số đầu tiên của cuộc gọi đếnCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
>>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True3 là tên của bảng liệt kê.
Đối số thứ hai là nguồn gốc của tên thành viên liệt kê. Nó có thể là một chuỗi các tên được phân tách bằng khoảng trắng, một chuỗi các tên, một chuỗi các bộ 2 với các cặp khóa/giá trị hoặc ánh xạ [ví dụ: từ điển] của các tên thành các giá trị. Hai tùy chọn cuối cùng cho phép gán các giá trị tùy ý cho các bảng điều khiển; Các số nguyên tăng tự động khác bắt đầu với 1 [sử dụng tham số
48 để chỉ định giá trị bắt đầu khác]. Một lớp mới có nguồn gốc từCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
>>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True3 được trả về. Nói cách khác, nhiệm vụ trên cho
50 tương đương với:Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
some_color: Color
4Lý do mặc định đến
51 là số bắt đầu chứ không phảiCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
52 làCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
52 làCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
54 theo nghĩa boolean, nhưng theo mặc định, các thành viên ENUM đều đánh giá thànhCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
55.Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Các enum pickling được tạo bằng API chức năng có thể khó khăn vì các chi tiết triển khai ngăn xếp khung được sử dụng để thử và tìm ra mô -đun nào được tạo ra trong [ví dụ: nó sẽ thất bại nếu bạn sử dụng chức năng tiện ích trong một mô -đun riêng biệt và cũng có thể không Làm việc trên Ironpython hoặc Jython]. Giải pháp là chỉ định tên mô -đun một cách rõ ràng như sau:
some_color: Color
5Cảnh báo
Nếu
56 không được cung cấp và enum không thể xác định nó là gì, các thành viên enum mới sẽ không thể không được biết đến; Để giữ lỗi gần hơn với nguồn, Pickling sẽ bị tắt.Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Trong một số trường hợp, giao thức Pickle 4 mới, dựa vào
57 được đặt đến vị trí nơi Pickle sẽ có thể tìm thấy lớp. Ví dụ: nếu lớp học được cung cấp trong lớp một ngày nào đó trong phạm vi toàn cầu:Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
some_color: Color
6Chữ ký hoàn chỉnh là:
some_color: Color
7giá trịNhững gì lớp enum mới sẽ ghi lại như tên của nó.
TênCác thành viên enum. Đây có thể là chuỗi được phân tách bằng khoảng trắng hoặc dấu phẩy [các giá trị sẽ bắt đầu vào lúc 1 trừ khi có quy định khác]:
some_color: Color
8hoặc một người lặp của tên:
hoặc một trình lặp của các cặp [tên, giá trị]:
some_color: Color
9hoặc một bản đồ:
>>> from enum import Enum >>> class Weekday[Enum]: ... MONDAY = 1 ... TUESDAY = 2 ... WEDNESDAY = 3 ... THURSDAY = 4 ... FRIDAY = 5 ... SATURDAY = 6 ... SUNDAY = 70Mô -đun
Tên của mô -đun nơi có thể tìm thấy lớp Enum mới.
tên gọinơi có thể tìm thấy lớp enum mới.
loại hìnhNhập để trộn vào lớp Enum mới.
bắt đầuSố để bắt đầu đếm tại nếu chỉ có tên được truyền vào.
Thay đổi trong phiên bản 3.5: Tham số bắt đầu đã được thêm vào.The start parameter was added.
Có nguồn gốc từ
Intenum¶
Biến thể đầu tiên của
>>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True3 được cung cấp cũng là một lớp con của
59. Các thành viên củaCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
36 có thể được so sánh với các số nguyên; Bằng cách mở rộng, các loại thuốc của các loại khác nhau cũng có thể được so sánh với nhau:Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
>>> from enum import Enum >>> class Weekday[Enum]: ... MONDAY = 1 ... TUESDAY = 2 ... WEDNESDAY = 3 ... THURSDAY = 4 ... FRIDAY = 5 ... SATURDAY = 6 ... SUNDAY = 71
Tuy nhiên, họ vẫn có thể được so sánh với các liệt kê
>>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True3 tiêu chuẩn:
>>> from enum import Enum >>> class Weekday[Enum]: ... MONDAY = 1 ... TUESDAY = 2 ... WEDNESDAY = 3 ... THURSDAY = 4 ... FRIDAY = 5 ... SATURDAY = 6 ... SUNDAY = 72
36 Các giá trị hoạt động như số nguyên theo những cách khác mà bạn mong đợi:Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
>>> from enum import Enum >>> class Weekday[Enum]: ... MONDAY = 1 ... TUESDAY = 2 ... WEDNESDAY = 3 ... THURSDAY = 4 ... FRIDAY = 5 ... SATURDAY = 6 ... SUNDAY = 73
Thuộc về sức mạnh
Biến thể thứ hai của
>>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True3 được cung cấp cũng là một lớp con của
64. Các thành viên củaCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
65 có thể được so sánh với các chuỗi; Bằng cách mở rộng, chuỗi liệt kê của các loại khác nhau cũng có thể được so sánh với nhau.Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Mới trong phiên bản 3.11.
Intflag¶
Biến thể tiếp theo của
>>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True3 được cung cấp,
67, cũng dựa trênCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
59. Sự khác biệt làCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
67 Các thành viên có thể được kết hợp bằng cách sử dụng các toán tử bitwise [&, |, ^, ~] và kết quả vẫn là thành viênCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
67, nếu có thể. Giống nhưCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
36,Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
67 Các thành viên cũng là số nguyên và có thể được sử dụng bất cứ nơi nào sử dụngCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
59.Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Ghi chú
Bất kỳ hoạt động nào trên một thành viên
67 bên cạnh các hoạt động bit khôn ngoan sẽ mất tư cách thành viênCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
67.Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Các hoạt động của bit khôn ngoan dẫn đến các giá trị
67 không hợp lệ sẽ mất tư cách thành viênCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
67. XemCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
78 để biết chi tiết.Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Mới trong phiên bản 3.6.
Đã thay đổi trong phiên bản 3.11.
Mẫu
67 Lớp:Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
>>> from enum import Enum >>> class Weekday[Enum]: ... MONDAY = 1 ... TUESDAY = 2 ... WEDNESDAY = 3 ... THURSDAY = 4 ... FRIDAY = 5 ... SATURDAY = 6 ... SUNDAY = 74
Cũng có thể đặt tên cho các kết hợp:
>>> from enum import Enum >>> class Weekday[Enum]: ... MONDAY = 1 ... TUESDAY = 2 ... WEDNESDAY = 3 ... THURSDAY = 4 ... FRIDAY = 5 ... SATURDAY = 6 ... SUNDAY = 75
Ghi chú
Bất kỳ hoạt động nào trên một thành viên
67 bên cạnh các hoạt động bit khôn ngoan sẽ mất tư cách thành viênCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
67.Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Đã thay đổi trong phiên bản 3.11.
Mẫu
67 Lớp:Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
>>> from enum import Enum >>> class Weekday[Enum]: ... MONDAY = 1 ... TUESDAY = 2 ... WEDNESDAY = 3 ... THURSDAY = 4 ... FRIDAY = 5 ... SATURDAY = 6 ... SUNDAY = 76
Cũng có thể đặt tên cho các kết hợp:
>>> from enum import Enum >>> class Weekday[Enum]: ... MONDAY = 1 ... TUESDAY = 2 ... WEDNESDAY = 3 ... THURSDAY = 4 ... FRIDAY = 5 ... SATURDAY = 6 ... SUNDAY = 77
Ghi chú
Bất kỳ hoạt động nào trên một thành viên
67 bên cạnh các hoạt động bit khôn ngoan sẽ mất tư cách thành viênCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
67.Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
>>> from enum import Enum >>> class Weekday[Enum]: ... MONDAY = 1 ... TUESDAY = 2 ... WEDNESDAY = 3 ... THURSDAY = 4 ... FRIDAY = 5 ... SATURDAY = 6 ... SUNDAY = 78
Các hoạt động của bit khôn ngoan dẫn đến các giá trị
67 không hợp lệ sẽ mất tư cách thành viênCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
67. XemCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
78 để biết chi tiết.Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
>>> from enum import Enum >>> class Weekday[Enum]: ... MONDAY = 1 ... TUESDAY = 2 ... WEDNESDAY = 3 ... THURSDAY = 4 ... FRIDAY = 5 ... SATURDAY = 6 ... SUNDAY = 79
Mới trong phiên bản 3.11.
Intflag¶
Biến thể tiếp theo của
>>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True3 được cung cấp,
67, cũng dựa trênCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
59. Sự khác biệt làCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
67 Các thành viên có thể được kết hợp bằng cách sử dụng các toán tử bitwise [&, |, ^, ~] và kết quả vẫn là thành viênCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
67, nếu có thể. Giống nhưCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
36,Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
67 Các thành viên cũng là số nguyên và có thể được sử dụng bất cứ nơi nào sử dụngCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
59.Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Mới trong phiên bản 3.6.
Đã thay đổi trong phiên bản 3.11.
>>> from enum import Enum >>> class Color[Enum]: ... RED = 1 ... GREEN = 2 ... BLUE = 30
Mẫu
67 Lớp:Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
>>> from enum import Enum >>> class Color[Enum]: ... RED = 1 ... GREEN = 2 ... BLUE = 31
Cũng có thể đặt tên cho các kết hợp:
>>> from enum import Enum >>> class Color[Enum]: ... RED = 1 ... GREEN = 2 ... BLUE = 32
Kết hợp được đặt tên được coi là bí danh. Bí danh không hiển thị trong quá trình lặp, nhưng có thể được trả lại từ các tra cứu giá trị.
>>> from enum import Enum >>> class Color[Enum]: ... RED = 1 ... GREEN = 2 ... BLUE = 33
Mới trong phiên bản 3.11.
Ghi chú
Bất kỳ hoạt động nào trên một thành viên
67 bên cạnh các hoạt động bit khôn ngoan sẽ mất tư cách thành viênCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
67.Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Các hoạt động của bit khôn ngoan dẫn đến các giá trị Copied!
from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
67 không hợp lệ sẽ mất tư cách thành viên Copied!
from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
67. Xem Copied!
from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
78 để biết chi tiết.
Copied!
from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
Copied!
from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
Copied!
from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
Mới trong phiên bản 3.6.
>>> from enum import Enum >>> class Color[Enum]: ... RED = 1 ... GREEN = 2 ... BLUE = 34
Đã thay đổi trong phiên bản 3.11.
Mẫu
67 Lớp:Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Cũng có thể đặt tên cho các kết hợp:
Kết hợp được đặt tên được coi là bí danh. Bí danh không hiển thị trong quá trình lặp, nhưng có thể được trả lại từ các tra cứu giá trị.
Một sự khác biệt quan trọng khác giữa
67 vàCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
>>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True
3 là nếu không có cờ được đặt [giá trị là 0], đánh giá boolean của nó là
54:Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Khi một loại dữ liệu khác được trộn lẫn, thuộc tính
00 không giống với chính thành viên Enum, mặc dù nó tương đương và sẽ so sánh bằng nhau.Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
%-Style định dạng:
22 vàclass Color[enum.Enum]: RED = '1' BLUE = '2' GREEN = '3' print[type[Color.RED] # will return
23 gọi lần lượt là lớp ____993class Color[enum.Enum]: RED = '1' BLUE = '2' GREEN = '3' print[type[Color.RED] # will return
37 vàCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
26; Các mã khác [chẳng hạn nhưclass Color[enum.Enum]: RED = '1' BLUE = '2' GREEN = '3' print[type[Color.RED] # will return
27 hoặcclass Color[enum.Enum]: RED = '1' BLUE = '2' GREEN = '3' print[type[Color.RED] # will return
28 cho intenum] coi thành viên enum là loại hỗn hợp của nó.class Color[enum.Enum]: RED = '1' BLUE = '2' GREEN = '3' print[type[Color.RED] # will return
Chuỗi được định dạng theo nghĩa đen,
29 vàclass Color[enum.Enum]: RED = '1' BLUE = '2' GREEN = '3' print[type[Color.RED] # will return
30 sẽ sử dụng phương pháp ENUM ____ ____137.,class Color[enum.Enum]: RED = '1' BLUE = '2' GREEN = '3' print[type[Color.RED] # will return
29, andclass Color[enum.Enum]: RED = '1' BLUE = '2' GREEN = '3' print[type[Color.RED] # will return
30 will use the enum’sclass Color[enum.Enum]: RED = '1' BLUE = '2' GREEN = '3' print[type[Color.RED] # will return
37 method.Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Ghi chú
Bởi vì
36,Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
67 vàCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
65 được thiết kế để thay thế cho các hằng số hiện có, phương phápCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
37 của chúng đã được đặt lại về phương pháp loại dữ liệuCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
37 của chúng.Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Khi nào nên sử dụng Copied!
from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
40 so với ________ 141¶
Copied!
from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
40 phải được sử dụng bất cứ khi nào bạn muốn tùy chỉnh giá trị thực của thành viênCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
>>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True3. Bất kỳ sửa đổi nào khác có thể đi trong
40 hoặcCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
41, vớiCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
41 được ưu tiên.Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Ví dụ: nếu bạn muốn chuyển một số mục cho hàm tạo, nhưng chỉ muốn một trong số chúng là giá trị:
>>> from enum import Enum >>> class Color[Enum]: ... RED = 1 ... GREEN = 2 ... BLUE = 35
Tốt hơn điểm¶
Được hỗ trợ class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
44 Tên
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
34 là một bản đồ chỉ được đặt hàng của ________ 246: ________ 247 mục. Nó chỉ có sẵn trên lớp.Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
40, nếu được chỉ định, phải tạo và trả lại các thành viên Enum; Đó cũng là một ý tưởng rất tốt để thiết lập thành viênCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
49 một cách thích hợp. Một khi tất cả các thành viên được tạo ra, nó không còn được sử dụng.Được hỗ trợ class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
50 tên
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
51 - Tên của thành viênclass Color[enum.Enum]: RED = '1' BLUE = '2' GREEN = '3' print[type[Color.RED] # will return
49 - giá trị của thành viên; có thể được đặt / sửa đổi trongclass Color[enum.Enum]: RED = '1' BLUE = '2' GREEN = '3' print[type[Color.RED] # will return
53class Color[enum.Enum]: RED = '1' BLUE = '2' GREEN = '3' print[type[Color.RED] # will return
54 - Hàm Tra cứu được sử dụng khi không tìm thấy giá trị; có thể bị ghi đèclass Color[enum.Enum]: RED = '1' BLUE = '2' GREEN = '3' print[type[Color.RED] # will return
39 - một danh sách các tên, dưới dạngCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
08 hoặcCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
64, sẽ không được chuyển thành các thành viên và sẽ bị xóa khỏi lớp cuối cùngCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
58 - Được sử dụng trong mã Python 2/3 để đảm bảo thứ tự thành viên nhất quán [thuộc tính lớp, bị xóa trong quá trình tạo lớp]class Color[enum.Enum]: RED = '1' BLUE = '2' GREEN = '3' print[type[Color.RED] # will return
59 - Được API chức năng sử dụng và bằngclass Color[enum.Enum]: RED = '1' BLUE = '2' GREEN = '3' print[type[Color.RED] # will return
31 để có được giá trị phù hợp cho một thành viên enum; có thể bị ghi đèCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Ghi chú
Bởi vì
36,Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
67 vàCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
65 được thiết kế để thay thế cho các hằng số hiện có, phương phápCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
37 của chúng đã được đặt lại về phương pháp loại dữ liệuCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
37 của chúng.Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Khi nào nên sử dụng
40 so với ________ 141¶Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Copied! Copied! Copied! Copied!
40 phải được sử dụng bất cứ khi nào bạn muốn tùy chỉnh giá trị thực của thành viên from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
>>> type[Weekday.MONDAY]
>>> isinstance[Weekday.FRIDAY, Weekday]
True
3. Bất kỳ sửa đổi nào khác có thể đi trong
40 hoặc from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
41, với from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
41 được ưu tiên.from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
54, class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
58, class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
59Ví dụ: nếu bạn muốn chuyển một số mục cho hàm tạo, nhưng chỉ muốn một trong số chúng là giá trị:
39Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Tốt hơn điểm¶
>>> from enum import Enum >>> class Color[Enum]: ... RED = 1 ... GREEN = 2 ... BLUE = 36
Ghi chú
Bởi vì
36,Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
67 vàCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
65 được thiết kế để thay thế cho các hằng số hiện có, phương phápCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
37 của chúng đã được đặt lại về phương pháp loại dữ liệuCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
37 của chúng.Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Khi nào nên sử dụng Copied!
from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
40 so với ________ 141¶
Copied!
from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
Copied! Copied! Copied! Copied!
40 phải được sử dụng bất cứ khi nào bạn muốn tùy chỉnh giá trị thực của thành viên from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
>>> type[Weekday.MONDAY]
>>> isinstance[Weekday.FRIDAY, Weekday]
True
3. Bất kỳ sửa đổi nào khác có thể đi trong
40 hoặc from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
41, với from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
41 được ưu tiên. are not converted to enum members, but remain normal attributes.from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
Ví dụ: nếu bạn muốn chuyển một số mục cho hàm tạo, nhưng chỉ muốn một trong số chúng là giá trị:
Tốt hơn điểm¶
Được hỗ trợ
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
44 Tên>>> from enum import Enum >>> class Color[Enum]: ... RED = 1 ... GREEN = 2 ... BLUE = 37
Copied!
34 là một bản đồ chỉ được đặt hàng của ________ 246: ________ 247 mục. Nó chỉ có sẵn trên lớp.from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
Ví dụ: nếu bạn muốn chuyển một số mục cho hàm tạo, nhưng chỉ muốn một trong số chúng là giá trị:
Tốt hơn điểm¶
Được hỗ trợ
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
44 Tên>>> from enum import Enum >>> class Color[Enum]: ... RED = 1 ... GREEN = 2 ... BLUE = 38
Copied!
from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
34 là một bản đồ chỉ được đặt hàng của ________ 246: ________ 247 mục. Nó chỉ có sẵn trên lớp.
Copied!
from typing import Literal
from enum import Enum
class Sizes[Enum]:
SMALL = 1
MEDIUM = 2
LARGE = 3
def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]:
print[size.name] # 👉️ MEDIUM
print[size.value] # 👉️ 2
return size.value
result = get_value_from_enum[Sizes.MEDIUM]
print[result] # 👉️ 2
40, nếu được chỉ định, phải tạo và trả lại các thành viên Enum; Đó cũng là một ý tưởng rất tốt để thiết lập thành viênCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
49 một cách thích hợp. Một khi tất cả các thành viên được tạo ra, nó không còn được sử dụng.>>> from enum import Enum >>> class Color[Enum]: ... RED = 1 ... GREEN = 2 ... BLUE = 39
Được hỗ trợ
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
50 tên
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
51 - Tên của thành viên
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
49 - giá trị của thành viên; có thể được đặt / sửa đổi trong class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
53>>> Weekday[3]0
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
54 - Hàm Tra cứu được sử dụng khi không tìm thấy giá trị; có thể bị ghi đè
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
39 - một danh sách các tên, dưới dạngCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
08 hoặcCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
64, sẽ không được chuyển thành các thành viên và sẽ bị xóa khỏi lớp cuối cùngCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
>>> Weekday[3]1
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
58 - Được sử dụng trong mã Python 2/3 để đảm bảo thứ tự thành viên nhất quán [thuộc tính lớp, bị xóa trong quá trình tạo lớp]
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
59 - Được API chức năng sử dụng và bằng 31 để có được giá trị phù hợp cho một thành viên enum; có thể bị ghi đèCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
>>> Weekday[3]2
Đối với các lớp
>>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True3 tiêu chuẩn, giá trị tiếp theo được chọn là giá trị cuối cùng được nhìn thấy được tăng lên bởi một.
Đối với các lớp
10, giá trị tiếp theo được chọn sẽ là công suất cao nhất tiếp theo, bất kể giá trị cuối cùng được nhìn thấy.Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Mới trong phiên bản 3.6:
54,class Color[enum.Enum]: RED = '1' BLUE = '2' GREEN = '3' print[type[Color.RED] # will return
58,class Color[enum.Enum]: RED = '1' BLUE = '2' GREEN = '3' print[type[Color.RED] # will return
59class Color[enum.Enum]: RED = '1' BLUE = '2' GREEN = '3' print[type[Color.RED] # will return
Mới trong phiên bản 3.7:
39Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
>>> Weekday[3]
3Để giúp giữ mã Python 2 / Python 3 đồng bộ hóa một thuộc tính
58 có thể được cung cấp. Nó sẽ được kiểm tra theo thứ tự thực tế của bảng liệt kê và gây ra lỗi nếu hai người không khớp:class Color[enum.Enum]: RED = '1' BLUE = '2' GREEN = '3' print[type[Color.RED] # will return
>>> Weekday[3]
4Trong mã Python 2, thuộc tính
58 là cần thiết vì thứ tự định nghĩa bị mất trước khi có thể ghi lại.class Color[enum.Enum]: RED = '1' BLUE = '2' GREEN = '3' print[type[Color.RED] # will return
>>> Weekday[3]
5Cờ nhiều bit, AKA Bí danh, có thể được trả lại từ các hoạt động:
>>> Weekday[3]
6Kiểm tra thành viên / ngăn chặn: Cờ không có giá trị luôn được coi là có chứa:
>>> Weekday[3]
7Nếu không, chỉ khi tất cả các bit của một cờ đều ở trong cờ khác, sẽ được trả về:
>>> Weekday[3]
8
Có một cơ chế ranh giới mới kiểm soát cách xử lý các bit ngoài phạm vi / không hợp lệ:
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
92, class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
93, class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
94 và class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
95:
Nghiêm ngặt -> tăng một ngoại lệ khi được trình bày với các giá trị không hợp lệ
Tuân thủ -> loại bỏ mọi bit không hợp lệ
Eject -> Mất trạng thái cờ và trở thành INT bình thường với giá trị đã cho
- Giữ -> Giữ các bit bổ sung
Giữ trạng thái cờ và các bit bổ sung
thêm bit không hiển thị trong lặp lại
Các bit bổ sung hiển thị trong repr [] và str []
Mặc định cho cờ là
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
92, mặc định cho 67 làCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
94 và mặc định cho class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
99 là class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
95 [xem from enum import Enum
from typing import Literal
class Color[Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
def some_function[some_color: Literal[Color.RED, Color.BLUE]] -> None:
pass
01 để biết ví dụ về khi class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
95].Enums khác nhau như thế nào? ¶
Enums có một metaclass tùy chỉnh ảnh hưởng đến nhiều khía cạnh của cả hai lớp
>>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True3 và các trường hợp [thành viên] của chúng.
Các lớp học Enum
Metaclass
from enum import Enum
from typing import Literal
class Color[Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
def some_function[some_color: Literal[Color.RED, Color.BLUE]] -> None:
pass
04 chịu trách nhiệm cung cấp from enum import Enum
from typing import Literal
class Color[Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
def some_function[some_color: Literal[Color.RED, Color.BLUE]] -> None:
pass
05, from enum import Enum
from typing import Literal
class Color[Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
def some_function[some_color: Literal[Color.RED, Color.BLUE]] -> None:
pass
06, from enum import Enum
from typing import Literal
class Color[Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
def some_function[some_color: Literal[Color.RED, Color.BLUE]] -> None:
pass
07 và các phương pháp khác cho phép người ta làm mọi việc với lớp >>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True3 thất bại trên một lớp điển hình, chẳng hạn như
from enum import Enum
from typing import Literal
class Color[Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
def some_function[some_color: Literal[Color.RED, Color.BLUE]] -> None:
pass
09 hoặc from enum import Enum
from typing import Literal
class Color[Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
def some_function[some_color: Literal[Color.RED, Color.BLUE]] -> None:
pass
10. from enum import Enum
from typing import Literal
class Color[Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
def some_function[some_color: Literal[Color.RED, Color.BLUE]] -> None:
pass
04 chịu trách nhiệm đảm bảo rằng nhiều phương pháp khác trong lớp >>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True3 cuối cùng là chính xác [chẳng hạn như
40,Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
from enum import Enum
from typing import Literal
class Color[Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
def some_function[some_color: Literal[Color.RED, Color.BLUE]] -> None:
pass
14, 37 vàCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
26].Các thành viên enum [còn gọi là các trường hợp] ¶
Điều thú vị nhất về các thành viên Enum là họ là những người độc thân.
from enum import Enum
from typing import Literal
class Color[Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
def some_function[some_color: Literal[Color.RED, Color.BLUE]] -> None:
pass
04 tạo ra tất cả trong khi nó đang tạo ra lớp enum, và sau đó đặt một 40 tùy chỉnh để đảm bảo rằng không có lớp mới nào được khởi tạo bằng cách chỉ trả lại các trường hợp thành viên hiện có.Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Trong khi
>>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True3,
36,Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
65,Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
10 vàCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
67 dự kiến sẽ bao gồm phần lớn các trường hợp sử dụng, họ không thể bao gồm tất cả. Dưới đây là các công thức nấu ăn cho một số loại bảng liệt kê khác nhau có thể được sử dụng trực tiếp hoặc làm ví dụ để tạo một bản thân riêng.Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Bỏ qua các giá trị
Trong nhiều trường hợp sử dụng, người ta không quan tâm đến giá trị thực của một bảng liệt kê là gì. Có một số cách để xác định loại liệt kê đơn giản này:
Sử dụng các trường hợp
31 cho giá trịCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Sử dụng các trường hợp
43 làm giá trịCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Sử dụng chuỗi mô tả làm giá trị
Sử dụng một tuple làm giá trị và tùy chỉnh
40 để thay thế bộ tuple bằng giá trịCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Sử dụng bất kỳ phương pháp nào trong số này biểu thị cho người dùng rằng các giá trị này không quan trọng và cũng cho phép người ta thêm, xóa hoặc sắp xếp lại các thành viên mà không phải đánh số lại các thành viên còn lại.
Sử dụng ________ 131¶
Sử dụng
31 sẽ giống như:Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
>>> Weekday[3]9
Sử dụng ________ 143¶
Sử dụng
43 sẽ giống như:Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
>>> print[Weekday.THURSDAY] Weekday.THURSDAY0
Đây cũng là một ví dụ điển hình về lý do tại sao bạn có thể muốn viết
class Color[enum.Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
print[type[Color.RED] # will return
26 của riêng bạn:>>> print[Weekday.THURSDAY] Weekday.THURSDAY1
Sử dụng chuỗi mô tả
Sử dụng một chuỗi như giá trị sẽ trông như thế nào:
>>> print[Weekday.THURSDAY] Weekday.THURSDAY2
Sử dụng tùy chỉnh ____ 140¶
Sử dụng tự động đánh số
40 sẽ giống như:Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
>>> print[Weekday.THURSDAY] Weekday.THURSDAY3
Để tạo mục đích tổng quát hơn
from enum import Enum
from typing import Literal
class Color[Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
def some_function[some_color: Literal[Color.RED, Color.BLUE]] -> None:
pass
35, hãy thêm from enum import Enum
from typing import Literal
class Color[Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
def some_function[some_color: Literal[Color.RED, Color.BLUE]] -> None:
pass
36 vào chữ ký:>>> print[Weekday.THURSDAY] Weekday.THURSDAY4
Sau đó, khi bạn kế thừa từ
from enum import Enum
from typing import Literal
class Color[Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
def some_function[some_color: Literal[Color.RED, Color.BLUE]] -> None:
pass
35, bạn có thể viết from enum import Enum
from typing import Literal
class Color[Enum]:
RED = '1'
BLUE = '2'
GREEN = '3'
def some_function[some_color: Literal[Color.RED, Color.BLUE]] -> None:
pass
38 của riêng mình để xử lý bất kỳ đối số bổ sung nào:>>> print[Weekday.THURSDAY] Weekday.THURSDAY5
Ghi chú
Phương pháp
40, nếu được xác định, được sử dụng trong quá trình tạo ra các thành viên ENUM; Sau đó, nó được thay thế bằng Enum từCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
40 được sử dụng sau khi tạo lớp để tra cứu các thành viên hiện tại.Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Đặt hàng
Một liệt kê được đặt hàng không dựa trên
36 và do đó duy trì các bất biếnCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
>>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True3 bình thường [chẳng hạn như không thể so sánh với các bảng liệt kê khác]:
>>> print[Weekday.THURSDAY] Weekday.THURSDAY6
Trùng lặpfreeenum¶
Bị lỗi nếu tìm thấy tên thành viên trùng lặp thay vì tạo bí danh:
>>> print[Weekday.THURSDAY] Weekday.THURSDAY7
Ghi chú
Phương pháp
40, nếu được xác định, được sử dụng trong quá trình tạo ra các thành viên ENUM; Sau đó, nó được thay thế bằng Enum từCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
40 được sử dụng sau khi tạo lớp để tra cứu các thành viên hiện tại.Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
Đặt hàng
Một liệt kê được đặt hàng không dựa trên
36 và do đó duy trì các bất biếnCopied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2
>>> type[Weekday.MONDAY] >>> isinstance[Weekday.FRIDAY, Weekday] True3 bình thường [chẳng hạn như không thể so sánh với các bảng liệt kê khác]:
>>> print[Weekday.THURSDAY] Weekday.THURSDAY8
Trùng lặpfreeenum¶
Bị lỗi nếu tìm thấy tên thành viên trùng lặp thay vì tạo bí danh:
>>> print[Weekday.THURSDAY] Weekday.THURSDAY9
>>> print[Weekday.THURSDAY]
Weekday.THURSDAY
7
Đây là một ví dụ hữu ích để phân lớp enum để thêm hoặc thay đổi các hành vi khác cũng như không cho phép bí danh. Nếu sự thay đổi mong muốn duy nhất là không cho phép bí danh, người trang trí
30 có thể được sử dụng thay thế.Copied!
from typing import Literal from enum import Enum class Sizes[Enum]: SMALL = 1 MEDIUM = 2 LARGE = 3 def get_value_from_enum[size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]]: print[size.name] # 👉️ MEDIUM print[size.value] # 👉️ 2 return size.value result = get_value_from_enum[Sizes.MEDIUM] print[result] # 👉️ 2