Bagaimana untuk melaksanakan penghitungan dalam Python

WBOY
Lepaskan: 2023-05-11 16:28:14
ke hadapan
1212 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk

<🎜. >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
Salin selepas log masuk

Gunakan kelas penghitungan anda sendiri:

print(color.YELLOW) # color.YELLOW
print(type(color.YELLOW)) # <enum &#39;color&#39;>
 
print(color.YELLOW.value)  # 1
print(type(color.YELLOW.value)) # <class &#39;int&#39;>
 
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 &#39;color&#39;>
  注意事项如下:
Salin selepas log masuk

1 classes tidak boleh digunakan Instantiate object

2. Untuk mengakses item dalam kelas enumerasi, hanya gunakan nama kelas untuk mengakses terus ditambah item yang ingin diakses, seperti warna.KUNING

3 . Kelas Penghitungan Kunci = Nilai yang ditakrifkan di dalam tidak boleh diubah suai di luar kelas, yang bermaksud pendekatan berikut adalah salah

color.YELLOW = 2  # Wrong, can&#39;t reassign member
Salin selepas log masuk

4. Item penghitungan boleh digunakan untuk perbandingan, menggunakan ==, atau adalah 

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
Salin selepas log masuk

7 Jika Jika kunci dalam kelas penghitungan tidak boleh sama, maka apabila mengimport Enum, anda perlu mengimport fungsi unik

from enum import Enum, unique
Salin selepas log masuk
.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan penghitungan dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!