পাইথনে গণনা (এনুমারেশন)
এই প্রবন্ধটি পাইথনে এনুমারেশন ব্যাখ্যা করে।
YouTube Video
পাইথনে গণনা (এনুমারেশন)
পাইথনের enum
একটি বিশেষ ক্লাস যা ধ্রুবকসমূহ সংজ্ঞায়িত করতে ব্যবহৃত হয়, পাঠযোগ্যতা উন্নত করে এবং কোডিং ত্রুটি এড়াতে সাহায্য করে।
Enum
কী?
Enum
(গণনার সংক্ষিপ্ত রূপ) একটি ক্লাস যা নামকৃত ধ্রুবকগুলির একটি সেট সংজ্ঞায়িত করতে ব্যবহৃত হয়। এটি সাধারণত সম্পর্কিত ধ্রুবকগুলোকে একত্রে গোষ্ঠীবদ্ধ করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, এটি রঙ, সপ্তাহের দিন বা দিক নির্দেশ করার জন্য উপযুক্ত।
কেন Enum
ব্যবহার করবেন?
Enum
ব্যবহারের জন্য অনেকগুলি কারণ রয়েছে।
- পাঠযোগ্যতা উন্নত করুন: নামযুক্ত ধ্রুবক ব্যবহার কোডকে আরও স্বাভাবিক করে তোলে।
- বাগ প্রতিরোধ: এটি ধ্রুবক মানগুলির পরিবর্তন বা অপব্যবহার রোধ করে।
- গোষ্ঠীবদ্ধকরণ: এটি সম্পর্কিত ধ্রুবকগুলোকে একটি একক ক্লাসে সংগঠিত করে এবং কাঠামোগত ডেটা উপস্থাপন করে।
Enum
এর মৌলিক ব্যবহার
enum
ব্যবহার করতে হলে, enum
মডিউল ইমপোর্ট করুন এবং একটি ক্লাস সংজ্ঞায়িত করুন। ক্লাসটি Enum
থেকে উত্তরাধিকারী হওয়া উচিত এবং আপনি যেগুলোকে ধ্রুবক হিসাবে বিবেচনা করতে চান সে মানগুলি সংজ্ঞায়িত করুন।
Enum
এর একটি মৌলিক উদাহরণ
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
এই উদাহরণে, আমরা তিনটি মানসহ Color
নামে একটি Enum
ক্লাস সংজ্ঞায়িত করি। প্রত্যেক নাম name
অ্যাট্রিবিউটের মাধ্যমে এবং সম্পর্কিত মান value
অ্যাট্রিবিউটের মাধ্যমে অ্যাক্সেস করা যেতে পারে।
Enums তুলনা করা
Enum
সদস্যদের নাম দিয়ে বা মান দিয়ে তুলনা করা যায়। আপনি পরিচয় এবং সমতা পরীক্ষা করার জন্য is
অপারেটর বা ==
অপারেটর ব্যবহার করতে পারেন।
তুলনার উদাহরণ
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
এর তুলনা ==
এবং is
ব্যবহার করে দেখানো হয়েছে। Enum
একই নাম এবং মান সহ বস্তুগুলি সঠিকভাবে তুলনা করার জন্য তৈরি করা হয়েছে।
auto()
এর সাথে স্বয়ংক্রিয় মান প্রদান
যদি আপনি Enum
সদস্যদের স্বয়ংক্রিয়ভাবে মান নির্ধারণ করতে চান, তবে আপনি enum.auto()
ব্যবহার করতে পারেন। auto()
এর মাধ্যমে Python স্বয়ংক্রিয়ভাবে মান নির্ধারণ করে, যা ডেভেলপারদের দ্বারা ম্যানুয়াল নির্ধারণের প্রয়োজন দূর করে।
auto()
এর উদাহরণ
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
এই উদাহরণে, auto()
ব্যবহার করলে স্পষ্টত মান নির্ধারণের প্রয়োজন দূর হয়, কোডকে আরও সংক্ষিপ্ত করে।
Enum
সদস্যদের একাধিক মান অনুর্ধ্ধকরণ
Enum
সদস্যরা টিউপলসের মতো একাধিক মানও ধারণ করতে পারে। এটি প্রতিটি সদস্যকে অতিরিক্ত সম্পর্কিত তথ্য ধারণ করার অনুমতি দেয়।
টিউপল ব্যবহার করে উদাহরণ
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
এই উদাহরণে, Status
শ্রেণীর সদস্যদের প্রত্যেকের দুটি মান রয়েছে, যা অবস্থা এবং বর্ণনা প্রতিনিধিত্ব করে। এটি তখন কার্যকর যখন আপনি একটি Enum
সদস্যের সাথে একাধিক তথ্য যুক্ত করতে চান।
Enum
কে ফ্ল্যাগ হিসাবে ব্যবহার করা
Python এর enum
তে একটি Flag
ক্লাস অন্তর্ভুক্ত রয়েছে যা বিট ফ্ল্যাগের মতো ব্যবহার করা যেতে পারে। Flag
ব্যবহার করলে আপনি একত্রে একাধিক অবস্থা পরিচালনা করতে পারেন।
Flag
এর উদাহরণ
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
এই উদাহরণে, বিটওয়াইজ অপারেশন ব্যবহার করে একাধিক অনুমতি একত্রিত করা হয়েছে। Flag
ব্যবহার করে আপনি সংক্ষিপ্তভাবে একাধিক অবস্থা পরিচালনা করতে পারেন।
Enum
ব্যবহারের সময় মাথায় রাখার গুরুত্বপূর্ণ বিষয়গুলি
Enum
এর অপরিবর্তনীয়তা
Enum
সদস্যরা অপরিবর্তনীয়। একবার নির্ধারিত হলে, তাদের নাম বা মান পরিবর্তন করা যাবে না। এটি ধারাবাহিকতা বজায় রাখতে কনস্ট্যান্ট হিসাবে একটি গুরুত্বপূর্ণ বৈশিষ্ট্য।
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.
ডুপ্লিকেট সদস্যদের নিষিদ্ধকরণ
‘Enum’ সদস্যদের নাম ও মান অনন্য হতে হবে। যদিও পুনরায় মুল্য অনুমোদিত, পাইথন স্বয়ংক্রিয়ভাবে প্রথম সদস্যকে অগ্রাধিকার দেয়।
সারসংক্ষেপ
পাইথনের ‘enum’ মডিউল একটি অত্যন্ত কার্যকর টুল যা ধ্রুবক সেটগুলিকে গ্রুপিং করে, পাঠযোগ্যতা বৃদ্ধি করে এবং কোডের সামঞ্জস্য বজায় রাখতে সহায়তা করে। বিভিন্ন ব্যবহারের সম্ভাবনা রয়েছে, বেসিক ব্যবহারের পাশাপাশি ‘auto()’ ব্যবহার করে স্বয়ংক্রিয় মান অ্যাসাইনমেন্ট এবং বিট ফ্ল্যাগ হিসাবে ব্যবহার পর্যন্ত।
‘Enum’ সঠিকভাবে বোঝা এবং আয়ত্ত করা কোডের গুণমান উন্নত করতে পারে এবং ভুল প্রতিরোধ করতে সহায়তা করে।
আপনি আমাদের ইউটিউব চ্যানেলে ভিজ্যুয়াল স্টুডিও কোড ব্যবহার করে উপরের নিবন্ধটি অনুসরণ করতে পারেন। দয়া করে ইউটিউব চ্যানেলটিও দেখুন।