Gunakan kelas biasa untuk melaksanakan penghitungan secara langsung
Dalam Python, penghitungan adalah sama dengan pembolehubah kelas yang kita takrifkan dalam objek Setiap pembolehubah kelas ialah item penghitungan item penghitungan akses ialah: nama kelas ditambah pembolehubah kelas, seperti ini:
class color(): YELLOW = 1 RED = 2 GREEN = 3 PINK = 4 # 访问枚举项 print(color.YELLOW) # 1
Walaupun ini boleh menyelesaikan masalah, ia tidak ketat dan tidak begitu selamat, seperti:
1 kelas enumerasi, sepatutnya tiada item penghitungan (pembolehubah kelas) dengan kunci yang sama
2 Tidak dibenarkan mengubah suai nilai item penghitungan secara langsung di luar kelas
class color(): YELLOW = 1 YELLOW = 3 # 注意这里又将YELLOW赋值为3,会覆盖前面的1 RED = 2 GREEN = 3 PINK = 4 # 访问枚举项 print(color.YELLOW) # 3 # 但是可以在外部修改定义的枚举项的值,这是不应该发生的 color.YELLOW = 99 print(color.YELLOW) # 99
<🎜. >Penyelesaian: Gunakan modul enum
Modul enum ialah modul terbina dalam sistem dan boleh diimport terus Walau bagaimanapun, semasa mengimport, tidak disyorkan untuk menggunakan enum import untuk memindahkan semua data dalam modul enum Import, secara amnya item yang paling biasa digunakan ialah Enum, IntEnum dan unik dalam modul enum# 导入枚举类 from enum import Enum # 继承枚举类 class color(Enum): YELLOW = 1 BEOWN = 1 # 注意BROWN的值和YELLOW的值相同,这是允许的,此时的BROWN相当于YELLOW的别名 RED = 2 GREEN = 3 PINK = 4 class color2(Enum): YELLOW = 1 RED = 2 GREEN = 3 PINK = 4
print(color.YELLOW) # color.YELLOW print(type(color.YELLOW)) # <enum 'color'> print(color.YELLOW.value) # 1 print(type(color.YELLOW.value)) # <class 'int'> print(color.YELLOW == 1) # False print(color.YELLOW.value == 1) # True print(color.YELLOW == color.YELLOW) # True print(color.YELLOW == color2.YELLOW) # False print(color.YELLOW is color2.YELLOW) # False print(color.YELLOW is color.YELLOW) # True print(color(1)) # color.YELLOW print(type(color(1))) # <enum 'color'> 注意事项如下:
color.YELLOW = 2 # Wrong, can't reassign member
5. Selepas mengimport Enum, Kunci dan Nilai dalam kelas penghitungan tidak boleh sama, dan nilainya boleh sama, tetapi kunci dengan nilai yang sama akan digunakan sebagai alias 6. Jika anda ingin menghitung kelas Nilai dalam hanya boleh menjadi nombor integer, maka anda boleh mengimport IntEnum dan kemudian mewarisi IntEnum Ambil perhatian bahawa pada masa ini, jika nilai ialah nombor rentetan, tiada ralat akan dilaporkan:
from enum import IntEnum
from enum import Enum, unique
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan penghitungan dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!