Hướng dẫn python type hint enum - loại trăn gợi ý enum

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.

Show

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)
True
1 để 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)
True
2 để 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

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 hoặ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
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 đó:

Thời gian

Một ví dụ để hiển thị thuộc tí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
39 đang sử dụng:

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)
True
3 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)
True
3.

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)
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:

>>> 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)
True
9 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
0

Tương tự như vậy, họ có một thuộc tính cho

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
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
1

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
2

Enum hoàn chỉnh ____104 bây giờ trông như thế nà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
3

Bây giờ chúng ta có thể tìm hiểu xem hôm nay là gì! Quan sá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
4

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

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
5

Chúng tôi đã thay đổi hai điều: Chúng tôi được thừa hưởng 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
10 và các giá trị đều là sức mạnh của 2.

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
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
6

Như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
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
7

Bạn thậm chí có thể lặp lại một biế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
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
8

Được rồi, hãy để một số công việc được thiết 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
9

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 

0

Trong 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

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
14 cho các giá trị:

class Color(enum.Enum):
    RED = '1'
    BLUE = '2'
    GREEN = '3'

print(type(Color.RED)  # will return 

1

Truy 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 đó

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
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).
>>> type(Weekday.MONDAY)

>>> isinstance(Weekday.FRIDAY, Weekday)
True
3 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 

2

Nế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 

3

Nếu bạn có thành viên Enum và cần

>>> type(Weekday.MONDAY)

>>> isinstance(Weekday.FRIDAY, Weekday)
True
9 hoặ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
00:

class Color(enum.Enum):
    RED = '1'
    BLUE = '2'
    GREEN = '3'

print(type(Color.RED)  # will return 

4

Sao 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 

5

Tuy 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

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 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ê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
19. Tra cứu giá trị của giá trị của

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 sẽ trả về 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
19. Tra cứu tên của

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 sẽ trả lại 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
19. Tra cứu tên của

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ũng sẽ trả về 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
19:

class Color(enum.Enum):
    RED = '1'
    BLUE = '2'
    GREEN = '3'

print(type(Color.RED)  # will return 

6

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:

class Color(enum.Enum):
    RED = '1'
    BLUE = '2'
    GREEN = '3'

print(type(Color.RED)  # will return 

7

Như 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 

8

Các thành viên Enum có một thuộc tính chỉ chứa

>>> type(Weekday.MONDAY)

>>> isinstance(Weekday.FRIDAY, Weekday)
True
9 của họ:

class Color(enum.Enum):
    RED = '1'
    BLUE = '2'
    GREEN = '3'

print(type(Color.RED)  # will return 

9

Ghi chú

Tương tự như vậy, họ có một thuộc tính cho

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
00 của họ:

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:

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
0

Bâ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
1

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 đó.

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
2

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 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:

Chúng tôi đã thay đổi hai điều: Chúng tôi được thừa hưởng 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
10 và các giá trị đều là sức mạnh của 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
3

So 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
4

So 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
5

So 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,

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 được thiết kế rõ ràng để hoạt động khác nhau, xem 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
6

Cá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
7

Then:

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
8

Cá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 (

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
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ê trong

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
39.

Lưu ý: Nếu liệt kê của bạn xác đị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
40 và/hoặ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
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ụ.

Các lớp con enum bị hạn chế

Một lớp

>>> type(Weekday.MONDAY)

>>> isinstance(Weekday.FRIDAY, Weekday)
True
3 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
9

Ngoà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
0

Nhưng điều này được cho phép:

some_color: Color
1

Cho 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
2

Cá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

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
44 trong lớp liệt kê.

API chức năng

Lớp

>>> type(Weekday.MONDAY)

>>> isinstance(Weekday.FRIDAY, Weekday)
True
3 có thể gọi được, cung cấp API chức năng sau:

some_color: Color
3

Các ngữ nghĩa của API này giố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
46. Đối số đầu tiên của cuộc gọi đến
>>> type(Weekday.MONDAY)

>>> isinstance(Weekday.FRIDAY, Weekday)
True
3 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ố

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
48 để chỉ định giá trị bắt đầu khác). Một lớp mới có nguồn gốc từ
>>> type(Weekday.MONDAY)

>>> isinstance(Weekday.FRIDAY, Weekday)
True
3 được trả về. Nói cách khác, nhiệm vụ trên cho

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
50 tương đương với:

some_color: Color
4

Lý do mặc định đế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
51 là số bắt đầu chứ không phả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
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à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
55.

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
5

Cảnh báo

Nế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
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.

Trong một số trường hợp, giao thức Pickle 4 mới, dựa vào

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
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:

some_color: Color
6

Chữ ký hoàn chỉnh là:

some_color: Color
7

giá trị

Những gì lớp enum mới sẽ ghi lại như tên của nó.

Tên

Cá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
8

hoặ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
9

hoặ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 = 7
0

Mô -đun

Tên của mô -đun nơi có thể tìm thấy lớp Enum mới.

tên gọi

nơi có thể tìm thấy lớp enum mới.

loại hình

Nhập để trộn vào lớp Enum mới.

bắt đầu

Số để 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)
True
3 được cung cấp cũng là một lớp con của

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
59. Các thành viên của

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 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:

>>> from enum import Enum
>>> class Weekday(Enum):
...     MONDAY = 1
...     TUESDAY = 2
...     WEDNESDAY = 3
...     THURSDAY = 4
...     FRIDAY = 5
...     SATURDAY = 6
...     SUNDAY = 7
1

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)
True
3 tiêu chuẩn:

>>> from enum import Enum
>>> class Weekday(Enum):
...     MONDAY = 1
...     TUESDAY = 2
...     WEDNESDAY = 3
...     THURSDAY = 4
...     FRIDAY = 5
...     SATURDAY = 6
...     SUNDAY = 7
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
36 Các giá trị hoạt động như số nguyên theo những cách khác mà bạn mong đợi:

>>> from enum import Enum
>>> class Weekday(Enum):
...     MONDAY = 1
...     TUESDAY = 2
...     WEDNESDAY = 3
...     THURSDAY = 4
...     FRIDAY = 5
...     SATURDAY = 6
...     SUNDAY = 7
3

Thuộc về sức mạnh

Biến thể thứ hai của

>>> type(Weekday.MONDAY)

>>> isinstance(Weekday.FRIDAY, Weekday)
True
3 được cung cấp cũng là một lớp con của

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
64. Các thành viên của

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ó 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.

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)
True
3 được cung cấ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
67, cũng dựa trê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
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ê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, 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ụ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
59.

Ghi chú

Bất kỳ hoạt động nào trên một 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 bên cạnh các hoạt động bit khôn ngoan 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.

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.

Mới trong phiên bản 3.6.

Đã thay đổi trong phiên bản 3.11.

Mẫ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
67 Lớp:

>>> from enum import Enum
>>> class Weekday(Enum):
...     MONDAY = 1
...     TUESDAY = 2
...     WEDNESDAY = 3
...     THURSDAY = 4
...     FRIDAY = 5
...     SATURDAY = 6
...     SUNDAY = 7
4

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 = 7
5

Ghi chú

Bất kỳ hoạt động nào trên một 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 bên cạnh các hoạt động bit khôn ngoan 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.

Đã thay đổi trong phiên bản 3.11.

Mẫ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
67 Lớp:

>>> from enum import Enum
>>> class Weekday(Enum):
...     MONDAY = 1
...     TUESDAY = 2
...     WEDNESDAY = 3
...     THURSDAY = 4
...     FRIDAY = 5
...     SATURDAY = 6
...     SUNDAY = 7
6

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 = 7
7

Ghi chú

Bất kỳ hoạt động nào trên một 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 bên cạnh các hoạt động bit khôn ngoan 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.

>>> from enum import Enum
>>> class Weekday(Enum):
...     MONDAY = 1
...     TUESDAY = 2
...     WEDNESDAY = 3
...     THURSDAY = 4
...     FRIDAY = 5
...     SATURDAY = 6
...     SUNDAY = 7
8

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.

>>> from enum import Enum
>>> class Weekday(Enum):
...     MONDAY = 1
...     TUESDAY = 2
...     WEDNESDAY = 3
...     THURSDAY = 4
...     FRIDAY = 5
...     SATURDAY = 6
...     SUNDAY = 7
9

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)
True
3 được cung cấ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
67, cũng dựa trê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
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ê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, 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ụ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
59.

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 = 3
0

Mẫ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
67 Lớp:

>>> from enum import Enum
>>> class Color(Enum):
...     RED = 1
...     GREEN = 2
...     BLUE = 3
1

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 = 3
2

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 = 3
3

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

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 bên cạnh các hoạt động bit khôn ngoan 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.

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.

Mới trong phiên bản 3.6.

>>> from enum import Enum
>>> class Color(Enum):
...     RED = 1
...     GREEN = 2
...     BLUE = 3
4

Đã thay đổi trong phiên bản 3.11.

Mẫ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
67 Lớp:

  1. Cũng có thể đặt tên cho các kết hợp:

  2. 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ị.

  3. Một sự khác biệt quan trọng khác giữa

    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à
    >>> 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à

    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:

  4. Khi một loại dữ liệu khác được trộn lẫn, thuộc tí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
    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.

  5. %-Style định dạng:

    class Color(enum.Enum):
        RED = '1'
        BLUE = '2'
        GREEN = '3'
    
    print(type(Color.RED)  # will return 
    
    
    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 ____993

    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
    37 và
    class Color(enum.Enum):
        RED = '1'
        BLUE = '2'
        GREEN = '3'
    
    print(type(Color.RED)  # will return 
    
    
    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ặc
    class 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ó.

  6. Chuỗi được định dạng theo nghĩa đen,

    class Color(enum.Enum):
        RED = '1'
        BLUE = '2'
        GREEN = '3'
    
    print(type(Color.RED)  # will return 
    
    
    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, and
    class Color(enum.Enum):
        RED = '1'
        BLUE = '2'
        GREEN = '3'
    
    print(type(Color.RED)  # will return 
    
    
    30 will use the enum’s

    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
    37 method.

Ghi chú

Bởi 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
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á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
37 của chúng đã được đặt lại về phương pháp loại dữ liệ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
37 của chúng.

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ên
>>> type(Weekday.MONDAY)

>>> isinstance(Weekday.FRIDAY, Weekday)
True
3. Bất kỳ sửa đổi nào khác có thể đi trong

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 hoặ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
41, 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
41 được ưu tiên.

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 = 3
5

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

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ên
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ên

  • 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

  • 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 đè

  • 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
    39 - một danh sách các tên, dưới 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 hoặ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
    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ùng

  • 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 
    
    
    59 - Được API chức năng sử dụng và bằ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
    31 để có được giá trị phù hợp cho một thành viên enum; có thể bị ghi đè

Ghi chú

Bởi 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
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á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
37 của chúng đã được đặt lại về phương pháp loại dữ liệ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
37 của chúng.

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ên
>>> type(Weekday.MONDAY)

>>> isinstance(Weekday.FRIDAY, Weekday)
True
3. Bất kỳ sửa đổi nào khác có thể đi trong

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 hoặ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
41, 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
41 được ưu tiên.
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 

59

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ị:

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
39

Tốt hơn điểm¶

>>> from enum import Enum
>>> class Color(Enum):
...     RED = 1
...     GREEN = 2
...     BLUE = 3
6

Ghi chú

Bởi 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
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á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
37 của chúng đã được đặt lại về phương pháp loại dữ liệ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
37 của chúng.

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ên
>>> type(Weekday.MONDAY)

>>> isinstance(Weekday.FRIDAY, Weekday)
True
3. Bất kỳ sửa đổi nào khác có thể đi trong

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 hoặ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
41, 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
41 được ưu tiên. are not converted to enum members, but remain normal attributes.

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 = 3
7

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.

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 = 3
8

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ên
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 = 3
9

Đượ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 

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 đè

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
39 - một danh sách các tên, dưới 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 hoặ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
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ùng

>>> 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 

59 - Được API chức năng sử dụng và bằ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
31 để có được giá trị phù hợp cho một thành viên enum; có thể bị ghi đè

>>> Weekday(3)

2

Đối với các lớp

>>> type(Weekday.MONDAY)

>>> isinstance(Weekday.FRIDAY, Weekday)
True
3 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

    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, 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.

  • Mới trong phiên bản 3.6:

    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 
    
    
    59

  • Mới trong phiên bản 3.7:

    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
    39

    >>> Weekday(3)
    
    
    3

  • Để giúp giữ mã Python 2 / Python 3 đồng bộ hóa một thuộc tính

    class Color(enum.Enum):
        RED = '1'
        BLUE = '2'
        GREEN = '3'
    
    print(type(Color.RED)  # will return 
    
    
    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:

    >>> Weekday(3)
    
    
    4

  • Trong mã Python 2, thuộc tính

    class Color(enum.Enum):
        RED = '1'
        BLUE = '2'
        GREEN = '3'
    
    print(type(Color.RED)  # will return 
    
    
    58 là cần thiết vì thứ tự định nghĩa bị mất trước khi có thể ghi lại.

    >>> Weekday(3)
    
    
    5

  • Cờ nhiều bit, AKA Bí danh, có thể được trả lại từ các hoạt động:

    >>> Weekday(3)
    
    
    6

  • Kiể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)
    
    
    7

    Nế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

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 là
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)
True
3 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)
True
3 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)
True
3 cuối cùng là chính xác (chẳng hạn 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
40,
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,

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
37 và
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

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 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ó.

Trong khi

>>> type(Weekday.MONDAY)

>>> isinstance(Weekday.FRIDAY, Weekday)
True
3,

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
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.

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

    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
    31 cho giá trị

  • Sử dụng các trường 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
    43 làm giá trị

  • 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

    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 để thay thế bộ tuple bằng giá trị

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

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
31 sẽ giống như:

>>> Weekday(3)

9

Sử dụng ________ 143¶

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
43 sẽ giống như:

>>> print(Weekday.THURSDAY)
Weekday.THURSDAY
0

Đâ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.THURSDAY
1

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.THURSDAY
2

Sử dụng tùy chỉnh ____ 140¶

Sử dụng tự động đánh số

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 sẽ giống như:

>>> print(Weekday.THURSDAY)
Weekday.THURSDAY
3

Để 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.THURSDAY
4

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.THURSDAY
5

Ghi chú

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
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.

Đặt hàng

Một liệt kê được đặt hàng không dựa trê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
36 và do đó duy trì các bất biến
>>> type(Weekday.MONDAY)

>>> isinstance(Weekday.FRIDAY, Weekday)
True
3 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.THURSDAY
6

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.THURSDAY
7

Ghi chú

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
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.

Đặt hàng

Một liệt kê được đặt hàng không dựa trê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
36 và do đó duy trì các bất biến
>>> type(Weekday.MONDAY)

>>> isinstance(Weekday.FRIDAY, Weekday)
True
3 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.THURSDAY
8

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.THURSDAY
9

>>> 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í

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
30 có thể được sử dụng thay thế.