enum менен санап көрсөтүүлөр (перечисления)
Тандоолордун туруктуу топтомун чачыранды саптардын же сандардын ордуна аталган константалар катары моделдеңиз
enum) — бул класс, анын экземплярлары константалык маанилердин туруктуу, аталган топтомун түзөт: буйрутманын статустары, колдонуучунун ролдору, светофордун түстөрү же карта масттары. Кодуңузда "paid" сыяктуу жылаңач саптарды же 2 сыяктуу сыйкырдуу сандарды чачыратуунун ордуна, сиз бир жолу Status.PAID деп аныктайсыз жана топтомдун жабык, өзүн-өзү документтештирген жана салыштырууга коопсуз экенине Python кепилдик берет.
- жылаңач сап/сан константалары эмне үчүн морт экенин түшүндүрүү,
enum.Enumменен санап көрсөтүүнү аныктоо жана элементтин.nameжана.valueкасиеттерин окуу,- элементтерди
isаркылуу коопсуз салыштыруу жана элементтер эмне үчүн синглтон экенин түшүнүү, auto()менен Python-го маанилерди автоматтык түрдө берүүгө уруксат берүү,- элемент бүтүн сан катары иштеши керек болгондо
IntEnumколдонуу, - элементти мааниси боюнча (
Color(1)) же аты боюнча (Color['RED']) табуу жана бүт топтомду айланып чыгуу.
1. Жылаңач константалардын көйгөйү
Тандоолордун туруктуу топтомдору бардык жерде кездешет: буйрутма "pending", "paid" же "shipped" болот; колдонуучу "admin" же "member" болот. Жөнөкөй ыкма — бул маанилерди кодго түздөн-түз кадимки саптар же сандар катары жазуу, б.а. сыйкырдуу маанилер.
status = "shiped" # ката! бир азга чейин эч ким даттанбайт
if status == "shipped": # эч качан дал келбейт -> тынч ката
send_tracking_email()
Эч нерсе "shiped" катасын кармабайт. Салыштыруу тынч эле False кайтарат, кат эч качан жөнөтүлбөйт. Жылаңач константалардын үч алсыздыгы бар:
- Коопсуздук жок: ката жазылган сап дагы эле жарактуу сап, ошондуктан каталар жазуу учурунда эмес, аткаруу учурунда чыгат.
- Өзүн-өзү документтештирүү жок:
if role == 2:ичиндеги кокус2окурманга2эмнени билдирерин айтпайт. - Жабык топтом жок: программанын башка бөлүгүнүн төртүнчү күтүлбөгөн статусту ойлоп табуусуна эч нерсе тоскоол болбойт.
Санап көрсөтүү үчөөнү тең бир заматта чечет: аттар текшерилет, документ сыяктуу окулат, ал эми жарактуу маанилердин топтому так бир жерде аныкталат.