Hướng dẫn python enum multiple values - python enum nhiều giá trị

Sử dụng MultivalueEnum để nhận được nhiều giá trị trong Python. Bạn phải cài đặt và nhập thư viện

from enum import Enum


class DType[Enum]:
    float32 = "f", 8
    double64 = "d", 9

    def __new__[cls, *values]:
        obj = object.__new__[cls]
        # first value is canonical value
        obj._value_ = values[0]
        for other_value in values[1:]:
            cls._value2member_map_[other_value] = obj
        obj._all_values = values
        return obj

    def __repr__[self]:
        return '' % [
            self.__class__.__name__,
            self._name_,
            ', '.join[[repr[v] for v in self._all_values]],
        ]


print[DType["f"]]
print[DType[9]]
4 và đây là cách dễ nhất.

Mã ví dụ đơn giản.

from aenum import MultiValueEnum


class DType[MultiValueEnum]:
    float32 = "f", 8
    double64 = "d", 9


print[DType["f"]]
print[DType[9]]

Output::

Cách khác nhận được nhiều giá trị enum

from enum import Enum


class DType[Enum]:
    float32 = "f", 8
    double64 = "d", 9

    def __new__[cls, *values]:
        obj = object.__new__[cls]
        # first value is canonical value
        obj._value_ = values[0]
        for other_value in values[1:]:
            cls._value2member_map_[other_value] = obj
        obj._all_values = values
        return obj

    def __repr__[self]:
        return '' % [
            self.__class__.__name__,
            self._name_,
            ', '.join[[repr[v] for v in self._all_values]],
        ]


print[DType["f"]]
print[DType[9]]

Output::

DType.float32DType.double64
DType.double64

Hãy bình luận nếu bạn có bất kỳ nghi ngờ và đề xuất nào về chủ đề enum Python này.

Lưu ý: IDE: & NBSP; Pycharm & NBSP; 2021.3.3 [Phiên bản cộng đồng] IDE: PyCharm 2021.3.3 [Community Edition]

Windows 10

Python 3.10.1

Tất cả & nbsp; ví dụ python & nbsp; là trong & nbsp; Python & nbsp; 3, vì vậy có thể khác với các phiên bản Python 2 hoặc nâng cấp. Python Examples are in Python 3, so Maybe its different from python 2 or upgraded versions.

Bằng cấp về Khoa học máy tính và Kỹ sư: Nhà phát triển ứng dụng và có nhiều ngôn ngữ lập trình kinh nghiệm. Sự nhiệt tình cho công nghệ và thích học kỹ thuật.

Enum viết tắt của từ enumeration có nghĩa là phép liệt kê, tính năng này xác định một tập hợp các tên được liên kết với các hằng số như số, chuỗi, v.v. Enum rất hữu ích để biểu diễn dữ liệu đại diện cho một tập hợp hữu hạn các trạng thái ví dụ như ngày trong tuần, tháng trong năm, …

from aenum import MultiValueEnum

class DType[MultiValueEnum]:
    float32 = "f", 8
    double64 = "d", 9

Chúng ta định nghĩa một lớp đơn giản [kế thừa từ Enum] chứa các tháng trong năm. Mỗi tháng được gán một hằng số duy nhất.

>>> DType["f"]


>>> DType[9]

Có một số cách chúng ta có thể làm điều này.

Thêm chỉ dẫn @unique vào trước định nghĩa lớp, đảm bảo rằng các phần tử trùng lặp không tồn tại trong enum.

class DType[Enum]:
    float32 = "f", 8
    double64 = "d", 9

    def __new__[cls, *values]:
        obj = object.__new__[cls]
        # first value is canonical value
        obj._value_ = values[0]
        for other_value in values[1:]:
            cls._value2member_map_[other_value] = obj
        obj._all_values = values
        return obj

    def __repr__[self]:
        return '' % [
                self.__class__.__name__,
                self._name_,
                ', '.join[[repr[v] for v in self._all_values]],
                ]

Chúng ta định nghĩa một lớp đơn giản [kế thừa từ Enum] chứa các tháng trong năm. Mỗi tháng được gán một hằng số duy nhất.

>>> DType["f"]


>>> Dtype[9]

Có một số cách chúng ta có thể làm điều này.

Bài viết này sẽ khám phá tính năng Python enum, một công cụ mạnh mẽ để xử lý các tập dữ liệu không thay đổi.

Nội dung chính ShowShow

  • Ví dụ đơn giản
  • In ra các thành viên của enum
  • Đảm bảo duy nhất
  • Một cách khác để tạo một Enum
  • Lặp trên phần tử của Enum
  • Vòng lặp For
  • Thuộc tính __members__
  • Giá trị tự động
  • Các tài liệu Tham khảo hữu ích
  • Phần kết luận

Điều này không chỉ là yếu tố không thể thiếu để phát triển các phần mềm tổng quát mà còn là một công cụ hữu ích để xây dựgn các trò chơi – khiến nó trở thành một kỹ năng và nền tảng quan trọng trong python.

Hãy đi sâu vào và khám phá chủ đề hấp dẫn này!

Điều kiện tiên quyết: Người đọc phải có kiến thức làm việc về ngôn ngữ lập trình Python. Việc làm quen với cách viết các lớp cũng sẽ hữu ích vì các enum được triển khai dưới dạng các lớp Python. Bạn có thể tham khảo thêm khóa học python cơ bản trên unica: Học lập trình python cơ bản thông qua lập trình một game.Học lập trình python cơ bản thông qua lập trình một game.

Enum viết tắt của từ enumeration có nghĩa là phép liệt kê, tính năng này xác định một tập hợp các tên được liên kết với các hằng số như số, chuỗi, v.v. Enum rất hữu ích để biểu diễn dữ liệu đại diện cho một tập hợp hữu hạn các trạng thái ví dụ như ngày trong tuần, tháng trong năm, …

Ví dụ đơn giản

In ra các thành viên của enum

from enum import Enum, unique, Flag
class Months[Enum] :
  JANUARY=1
  FEBRUARY=2
  MARCH = 3
  APRIL=4
  MAY=5
  JUNE=6
  JULY=7
  AUGUST=8
  SEPTEMBER=9
  OCTOBER=10
  NOVEMBER=11
  DECEMBER=12

In ra các thành viên của enum

Đảm bảo duy nhất

# sử dụng chỉ số
>> print [Months[7]]
Months.JULY
# chỉ số bằng tên
>> print [Months['JULY']]
Months.JULY
# thông qua tên
>> print[Months.JULY]
Months.JULY
# thông qua tên
>> print [Months.JULY.name]
JULY
# thông qua giá trị
>> print [Months.JULY.value]
JULY

Đảm bảo duy nhất

Một cách khác để tạo một Enum@unique vào trước định nghĩa lớp, đảm bảo rằng các phần tử trùng lặp không tồn tại trong enum.

Lặp trên phần tử của Enum

Vòng lặp For

Một cách khác để tạo một Enum

Lặp trên phần tử của Enum

>> quarter1= Enum['Q1', [['January', 1], ['February', 2], ['March', 3]]]
>> print [quarter1[3]]
Q1.March
# có thể viết dưới dạng
>> quarter1= Enum['Q1', ['January February March']]
>> print [quarter1]

# truy cập item
>>> quarter1['January']

>>> Quarter1.March

>>> Quarter1.March.value
3

Lặp trên phần tử của Enum

Vòng lặp For

Thuộc tính __members__

from enum import Enum


class DType[Enum]:
    float32 = "f", 8
    double64 = "d", 9

    def __new__[cls, *values]:
        obj = object.__new__[cls]
        # first value is canonical value
        obj._value_ = values[0]
        for other_value in values[1:]:
            cls._value2member_map_[other_value] = obj
        obj._all_values = values
        return obj

    def __repr__[self]:
        return '' % [
            self.__class__.__name__,
            self._name_,
            ', '.join[[repr[v] for v in self._all_values]],
        ]


print[DType["f"]]
print[DType[9]]
0

Thuộc tính __members__

Giá trị tự động

from enum import Enum


class DType[Enum]:
    float32 = "f", 8
    double64 = "d", 9

    def __new__[cls, *values]:
        obj = object.__new__[cls]
        # first value is canonical value
        obj._value_ = values[0]
        for other_value in values[1:]:
            cls._value2member_map_[other_value] = obj
        obj._all_values = values
        return obj

    def __repr__[self]:
        return '' % [
            self.__class__.__name__,
            self._name_,
            ', '.join[[repr[v] for v in self._all_values]],
        ]


print[DType["f"]]
print[DType[9]]
1

Giá trị tự động

Các tài liệu Tham khảo hữu ích

from enum import Enum


class DType[Enum]:
    float32 = "f", 8
    double64 = "d", 9

    def __new__[cls, *values]:
        obj = object.__new__[cls]
        # first value is canonical value
        obj._value_ = values[0]
        for other_value in values[1:]:
            cls._value2member_map_[other_value] = obj
        obj._all_values = values
        return obj

    def __repr__[self]:
        return '' % [
            self.__class__.__name__,
            self._name_,
            ', '.join[[repr[v] for v in self._all_values]],
        ]


print[DType["f"]]
print[DType[9]]
2

Phần kết luận_generate_next_value_ trong lớp.

from enum import Enum


class DType[Enum]:
    float32 = "f", 8
    double64 = "d", 9

    def __new__[cls, *values]:
        obj = object.__new__[cls]
        # first value is canonical value
        obj._value_ = values[0]
        for other_value in values[1:]:
            cls._value2member_map_[other_value] = obj
        obj._all_values = values
        return obj

    def __repr__[self]:
        return '' % [
            self.__class__.__name__,
            self._name_,
            ', '.join[[repr[v] for v in self._all_values]],
        ]


print[DType["f"]]
print[DType[9]]
3

Các tài liệu Tham khảo hữu ích

Phần kết luận

Điều này không chỉ là yếu tố không thể thiếu để phát triển các phần mềm tổng quát mà còn là một công cụ hữu ích để xây dựgn các trò chơi – khiến nó trở thành một kỹ năng và nền tảng quan trọng trong python.

Hãy đi sâu vào và khám phá chủ đề hấp dẫn này!Học lập trình python cơ bản thông qua lập trình một game trên unica.

Điều kiện tiên quyết: Người đọc phải có kiến thức làm việc về ngôn ngữ lập trình Python. Việc làm quen với cách viết các lớp cũng sẽ hữu ích vì các enum được triển khai dưới dạng các lớp Python. Bạn có thể tham khảo thêm khóa học python cơ bản trên unica: Học lập trình python cơ bản thông qua lập trình một game.

Enum viết tắt của từ enumeration có nghĩa là phép liệt kê, tính năng này xác định một tập hợp các tên được liên kết với các hằng số như số, chuỗi, v.v. Enum rất hữu ích để biểu diễn dữ liệu đại diện cho một tập hợp hữu hạn các trạng thái ví dụ như ngày trong tuần, tháng trong năm, …

Phần kết luận

Điều này không chỉ là yếu tố không thể thiếu để phát triển các phần mềm tổng quát mà còn là một công cụ hữu ích để xây dựgn các trò chơi – khiến nó trở thành một kỹ năng và nền tảng quan trọng trong python.

Xem thêm:

  • Python Tuple

Bài Viết Liên Quan

Chủ Đề