Penggunaan kelas enumerasi

Dalam pembangunan sebenar, kita tidak boleh melakukan tanpa mentakrifkan pemalar Apabila kita perlu mentakrifkan pemalar, satu cara ialah menggunakan pembolehubah huruf besar untuk mentakrifkannya dengan integer, seperti bulan:

JAN = 1
FEB = 2
MAR = 3
...
NOV = 11
DEC = 12

Sudah tentu, ini mudah dan pantas, tetapi. kelemahannya ialah jenis int dan kekal sebagai pembolehubah.

Adakah cara yang baik?

Pada masa ini kami mentakrifkan jenis kelas, dan setiap pemalar adalah satu-satunya kejadian dalam kelas. Kebetulan Python menyediakan kelas Enum untuk melaksanakan fungsi ini seperti berikut:

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
from enum import Enum
Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))
# 遍历枚举类型
for name, member in Month.__members__.items():
    print(name, '---------', member, '----------', member.value)
# 直接引用一个常量
print('\n', Month.Jan)

Hasil output adalah seperti berikut:

a41b1b020149ba50432eae7d4913fa0.png

Ia boleh dilihat bahawa kita boleh terus menggunakan Enum untuk mentakrifkan kelas penghitungan. Dalam kod di atas, kami mencipta jenis penghitungan Bulan tentang bulan Apa yang perlu diperhatikan di sini ialah parameter pembinaan Parameter pertama Bulan mewakili nama kelas kelas penghitungan, dan parameter tuple kedua mewakili nilai kelas enumerasi sudah tentu, kelas enumerasi merentasi semua ahlinya melalui kaedah __members__. Satu perkara yang perlu diambil perhatian ialah member.value ialah pemalar jenis int yang diberikan secara automatik kepada ahli, bermula dari 1 secara lalai. Lebih-lebih lagi, ahli-ahli Enum semuanya bujang dan tidak boleh dijadikan instantiated atau ditukar

Meneruskan pembelajaran
  • Cadangan kursus
  • Muat turun perisian kursus