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) # 1Bu ö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) # TrueEnum 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) # 3Bu ö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 userBu ö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) # FalseBu ö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.