पायथन में अमूर्त कक्षाएं
यह लेख पायथन में अमूर्त कक्षाओं को समझाता है।
हम abc
मॉड्यूल का उपयोग करके अमूर्त कक्षाओं के मूल तंत्र को समझाएंगे, व्यावहारिक उदाहरण प्रदान करेंगे और कोड के साथ सब कुछ विवरण से बताएंगे।
YouTube Video
पायथन में अमूर्त कक्षाएं
पायथन का abc
मॉड्यूल (अमूर्त बेस कक्षाएं) मानक पुस्तकालय का हिस्सा है और अमूर्त कक्षाओं को परिभाषित करने के लिए उपयोग किया जाता है, जो यह निर्धारित करने के लिए टेम्पलेट प्रदान करता है कि कोई कक्षा कौन-कौन से मैथड्स लागू करेगी। इस मॉड्यूल का उपयोग कक्षा डिज़ाइन में लचीलापन और मजबूती बढ़ाता है।
अमूर्त कक्षा क्या है?
अमूर्त कक्षाएं ऐसी कक्षाएं हैं जो ठोस (उदाहरण योग्य) कक्षाओं के लिए एक सामान्य इंटरफेस परिभाषित करने के लिए उपयोग की जाती हैं। अमूर्त कक्षाओं को स्वयं उदाहरण नहीं बनाया जा सकता है; व्युत्पन्न (उप) कक्षाओं में एक ठोस कार्यान्वयन प्रदान करना आवश्यक है।
abc
मॉड्यूल आपको अमूर्त विधियों या गुणों को परिभाषित करने और विरासत में मिली कक्षाओं में उनके कार्यान्वयन को लागू करने की अनुमति देता है। अगर एक भी अमूर्त विधि लागू नहीं की जाती है, तो कक्षा का उदाहरण नहीं बनाया जा सकता है।
abc
मॉड्यूल का उपयोग कैसे करें
abc
मॉड्यूल का उपयोग करके अमूर्त कक्षा बनाने के लिए, ABC
कक्षा से विरासत लें और @abstractmethod
डेकोरेटर का उपयोग करके अमूर्त विधियों को परिभाषित करें।
1from abc import ABC, abstractmethod
2
3# Definition of the abstract base class
4class Animal(ABC):
5
6 @abstractmethod
7 def sound(self):
8 pass
9
10# Concrete implementation in the subclass
11class Dog(Animal):
12 def sound(self):
13 return "Woof!"
14
15class Cat(Animal):
16 def sound(self):
17 return "Meow!"
यहां, Animal
कक्षा को अमूर्त कक्षा के रूप में परिभाषित किया गया है और इसमें sound
नामक एक अमूर्त विधि शामिल है। इस विधि को उपकक्षाओं में ठोस रूप से लागू किया जाना चाहिए। Dog
और Cat
Animal
से विरासत लेते हैं और प्रत्येक sound
विधि को लागू करते हैं।
अमूर्त कक्षाओं का उदाहरण बनाना
अमूर्त कक्षाओं का सीधे उदाहरण नहीं बनाया जा सकता है। उदाहरण के लिए, Animal
कक्षा का उदाहरण बनाने का प्रयास करने से त्रुटि उत्पन्न होगी।
1animal = Animal() # TypeError: Can't instantiate abstract class Animal with abstract methods sound
- जब अमूर्त कक्षा का उदाहरण बनाने का प्रयास किया जाता है, तो पायथन यह निर्धारित करता है कि कुछ अमूर्त विधियां लागू नहीं की गई हैं और एक
TypeError
उत्पन्न करता है। यदि सभी आवश्यक अमूर्त विधियां उपकक्षा में लागू की जाती हैं, तो उदाहरण बनाना संभव हो जाता है।
एकाधिक अमूर्त विधियां
यह भी संभव है कि किसी कक्षा में कई अमूर्त विधियां हों। जब तक सभी अमूर्त विधियां उपकक्षा में लागू नहीं की जाती हैं, कक्षा अमूर्त कक्षा बनी रहती है।
1from abc import ABC, abstractmethod
2
3class Vehicle(ABC):
4
5 @abstractmethod
6 def start_engine(self):
7 pass
8
9 @abstractmethod
10 def stop_engine(self):
11 pass
12
13class Car(Vehicle):
14 def start_engine(self):
15 return "Car engine started"
16
17 def stop_engine(self):
18 return "Car engine stopped"
इस उदाहरण में, Vehicle
वर्ग में दो अमूर्त विधियाँ हैं, और Car
वर्ग को तभी इंस्टेंटियेट किया जा सकता है जब दोनों विधियों को लागू किया गया हो।
अमूर्त गुणों को परिभाषित करना
abc
मॉड्यूल न केवल अमूर्त विधियों का समर्थन करता है बल्कि अमूर्त गुणों का भी समर्थन करता है। यह व्युत्पन्न वर्गों में गुणों को लागू करने को मजबूती देता है।
1from abc import ABC, abstractmethod
2
3class Shape(ABC):
4
5 @property
6 @abstractmethod
7 def area(self):
8 pass
9
10class Circle(Shape):
11 def __init__(self, radius):
12 self.radius = radius
13
14 @property
15 def area(self):
16 return 3.14159 * (self.radius ** 2)
- इस उदाहरण में,
Shape
वर्ग में एक अमूर्त गुणarea
है, और उपवर्गCircle
इस गुण को ठोस बनाता है। इस प्रकार, कोड संगतता बनाए रखने के लिए अमूर्त वर्गों का उपयोग करके गुणों के कार्यान्वयन को लागू किया जा सकता है।
isinstance()
और issubclass()
का उपयोग करना
अमूर्त वर्गों का उपयोग करके, आप isinstance()
या issubclass()
के साथ वर्ग उत्तराधिकार संबंधों की पुष्टि कर सकते हैं, जिससे कोड की सुरक्षा और लचीलापन बढ़ता है।
1from abc import ABC, abstractmethod
2
3# Definition of the abstract base class
4class Animal(ABC):
5
6 @abstractmethod
7 def sound(self):
8 pass
9
10# Concrete implementation in the subclass
11class Dog(Animal):
12 def sound(self):
13 return "Woof!"
14
15class Cat(Animal):
16 def sound(self):
17 return "Meow!"
18
19class Vehicle(ABC):
20
21 @abstractmethod
22 def start_engine(self):
23 pass
24
25 @abstractmethod
26 def stop_engine(self):
27 pass
28
29class Car(Vehicle):
30 def start_engine(self):
31 return "Car engine started"
32
33 def stop_engine(self):
34 return "Car engine stopped"
35
36print("Dog() is an Animal? -> ", isinstance(Dog(), Animal)) # True
37print("Dog is subclass of Animal? -> ", issubclass(Dog, Animal)) # True
38print("Cat() is a Vehicle? -> ", isinstance(Cat(), Vehicle)) # False
isinstance()
का उपयोग यह जांचने के लिए किया जाता है कि कोई वस्तु निर्दिष्ट वर्ग का उदाहरण है या नहीं, और issubclass()
का उपयोग यह जांचने के लिए किया जाता है कि कोई वर्ग निर्दिष्ट वर्ग का उपवर्ग है या नहीं।
सारांश
abc
मॉड्यूल का उपयोग करके अमूर्त वर्गों को डिज़ाइन करके, आप वर्गों के बीच इंटरफ़ेस को स्पष्ट कर सकते हैं और आवश्यक विधियों और गुणों के कार्यान्वयन को लागू कर सकते हैं। यह कोड संगतता बनाए रखने और त्रुटियों को कम करने में मदद करता है, जिससे यह विशेष रूप से बड़े पैमाने के प्रोजेक्ट्स के लिए उपयोगी होता है।
अमूर्त वर्ग पायथन में एक महत्वपूर्ण उपकरण हैं जो लचीली वस्तु-उन्मुख प्रोग्रामिंग का समर्थन करते हैं, वर्ग पुन: प्रयोज्यता और अनुरक्षण को बढ़ावा देते हैं।
आप हमारे YouTube चैनल पर Visual Studio Code का उपयोग करके ऊपर दिए गए लेख के साथ आगे बढ़ सकते हैं। कृपया YouTube चैनल को भी देखें।