Python'da Numaralandırmalar
Bu makale, Python'da numaralandırmaların ne olduğunu açıklar.
YouTube Video
Python'da Numaralandırmalar
Python'daki enum
, sabitleri tanımlamak, okunabilirliği artırmak ve kodlama hatalarını önlemek için özel bir sınıftır.
Enum
nedir?
Enum
(numaralandırmanın kısaltması), adlandırılmış sabitler kümesini tanımlamak için kullanılan bir sınıftır. Genellikle ilgili sabitleri bir araya gruplamak için kullanılır. Örneğin, renkleri, haftanın günlerini veya yönleri temsil etmek için uygundur.
Neden Enum
kullanmalıyız?
Enum
kullanmak için birkaç neden vardır.
- Geliştirilmiş okunabilirlik: Adlandırılmış sabitler kullanmak kodu daha sezgisel hale getirir.
- Hata önleme: Sabit değerlerin değiştirilmesini veya yanlış kullanılmasını önler.
- Gruplama: İlgili sabitleri tek bir sınıfta düzenleyerek yapılandırılmış verileri temsil eder.
Enum
'un Temel Kullanımı
enum
kullanmak için enum
modülünü içe aktarın ve bir sınıf tanımlayın. Sınıf, Enum
'dan miras almalı ve sabit olarak işlemek istediğiniz değerleri tanımlamalıdır.
Enum
için Temel Bir Örnek
1from enum import Enum
2
3class Color(Enum):
4 RED = 1
5 GREEN = 2
6 BLUE = 3
7
8# Usage of Enum
9print(Color.RED) # Color.RED
10print(Color.RED.name) # RED
11print(Color.RED.value) # 1
Bu örnekte, üç değer içeren Color
adlı bir Enum
sınıfı tanımlıyoruz. Her bir isme name
özelliği ile, ilişkili değere ise value
özelliği ile erişilebilir.
Enum'ların Karşılaştırılması
Enum
üyeleri, ya isimleriyle ya da değerleriyle karşılaştırılabilir. Kimlik ve eşitliği kontrol etmek için is
operatörünü veya ==
operatörünü kullanabilirsiniz.
Karşılaştırma Örneği
1from enum import Enum
2
3class Direction(Enum):
4 NORTH = 1
5 SOUTH = 2
6 EAST = 3
7 WEST = 4
8
9# Equality comparison
10print(Direction.NORTH == Direction.SOUTH) # False
11print(Direction.NORTH == Direction.NORTH) # True
12
13# Identity comparison using is
14print(Direction.NORTH is Direction.SOUTH) # False
15print(Direction.NORTH is Direction.NORTH) # True
Enum
kullanılarak ==
ve is
ile yapılan karşılaştırmalar burada gösterilmektedir. Enum
, aynı ada ve değerlere sahip nesneleri doğru bir şekilde karşılaştırmak için tasarlanmıştır.
auto()
ile otomatik değer atama
Enum
üyelerine otomatik olarak değer atamak istiyorsanız, enum.auto()
kullanabilirsiniz. auto()
, Python'un değerleri otomatik olarak atamasını sağlar ve geliştiricilerin manuel olarak belirtme gereksinimini ortadan kaldırır.
auto()
örneği
1from enum import Enum, auto
2
3class Animal(Enum):
4 DOG = auto()
5 CAT = auto()
6 MOUSE = auto()
7
8# Check the values of Enum
9print(Animal.DOG.value) # 1
10print(Animal.CAT.value) # 2
11print(Animal.MOUSE.value) # 3
Bu örnekte, auto()
kullanımı değerlerin açıkça belirtilmesi gereğini ortadan kaldırır ve kodu daha özlü hale getirir.
Enum
üyelerine birden fazla değer atama
Enum
üyeleri aynı zamanda demetler (tuple) gibi birden fazla değeri de içerebilir. Bu, her üyenin ek ilişkili bilgiler içermesini sağlar.
Demetler kullanılarak örnek
1from enum import Enum
2
3class Status(Enum):
4 ACTIVE = (1, 'Active user')
5 INACTIVE = (2, 'Inactive user')
6 SUSPENDED = (3, 'Suspended user')
7
8# Accessing Enum members
9print(Status.ACTIVE.name) # ACTIVE
10print(Status.ACTIVE.value) # (1, 'Active user')
11print(Status.ACTIVE.value[1]) # Active user
Bu örnekte, Status
sınıfının üyeleri, durumu ve açıklamayı temsil eden ikişer değere sahiptir. Bu, bir Enum
üyesini birden fazla bilgi parçasıyla ilişkilendirmek istediğinizde yararlıdır.
Enum
kullanılarak bayraklar oluşturma
Python'un enum
modülü, bit bayrakları gibi kullanılabilecek bir Flag
sınıfı içerir. Flag
kullanmak, birden fazla durumu bir arada yönetmenizi sağlar.
Flag
örneği
1from enum import Flag, auto
2
3class Permission(Flag):
4 READ = auto()
5 WRITE = auto()
6 EXECUTE = auto()
7
8# Combining flags
9permission = Permission.READ | Permission.WRITE
10print(permission) # Permission.READ|WRITE
11print(Permission.EXECUTE in permission) # False
Bu örnekte, birden fazla izni birleştirmek için bit düzeyinde işlemler kullanılır. Flag
kullanmak, birden fazla durumu kısa ve öz bir şekilde yönetmenizi sağlar.
Enum
kullanırken dikkate alınması gereken noktalar
Enum
değişmezliği
Enum
üyeleri değiştirilemezdir. Tanımlandıktan sonra, isimleri veya değerleri değiştirilemez. Bu, sabitler olarak tutarlılığı sağlamak için önemli bir özelliktir.
1from enum import Enum
2
3class Days(Enum):
4 MONDAY = 1
5 TUESDAY = 2
6
7# Example of immutability
8# Days.MONDAY = 3 # AttributeError: Cannot reassign members.
Yinelenen üyelerin yasaklanması
Enum
üyelerinin benzersiz isimlere ve değerlere sahip olması gerekir. Aynı değerlere izin verilse bile, Python otomatik olarak ilk üyeyi önceliklendirir.
Özet
Python'un enum
modülü, sabit setlerini gruplamak, okunabilirliği artırmak ve kod tutarlılığını sağlamak için oldukça faydalı bir araçtır. auto()
kullanarak otomatik değer atanmasından, bit bayrakları olarak kullanılmasına kadar temel kullanımdan çeşitli kullanımlara olanak sağlanır.
Enum
'u doğru bir şekilde anlamak ve ustalaşmak, kod kalitesini artırabilir ve hataların önlenmesine yardımcı olabilir.
Yukarıdaki makaleyi, YouTube kanalımızda Visual Studio Code'u kullanarak takip edebilirsiniz. Lütfen YouTube kanalını da kontrol edin.