पायथन में एब्सट्रैक्ट क्लासेस: ए बिगिनर्स गाइड

एक अमूर्त वर्ग संबंधित वर्गों के लिए एक खाका है। इसे तत्काल नहीं किया जा सकता है लेकिन केवल विरासत के माध्यम से ही पहुंचा जा सकता है। एक उपवर्ग जो एक अमूर्त वर्ग को इनहेरिट करता है, उसे इसके अमूर्त तरीकों को लागू करने की आवश्यकता होती है। अन्यथा, संकलक एक त्रुटि को चिह्नित करेगा।

सार विधियां कार्यान्वयन के बिना विधियां हैं। एक अमूर्त वर्ग में अमूर्त विधियाँ या ठोस (सामान्य) विधियाँ हो सकती हैं।

पायथन सीधे अमूर्त विधियों का समर्थन नहीं करता है, लेकिन आप उन्हें abc (सार आधार वर्ग) मॉड्यूल के माध्यम से एक्सेस कर सकते हैं।

पायथन में एबीसी मॉड्यूल का उपयोग करना

पायथन में एक अमूर्त वर्ग को परिभाषित करने के लिए, आपको abc मॉड्यूल आयात करने की आवश्यकता है।

नीचे दिया गया उदाहरण देखें:

 from abc import ABC
class AbstractClassName(ABC):
pass

कीवर्ड पास पर ध्यान दें । इस कीवर्ड का उपयोग खाली कोड के लिए खड़े होने के लिए किया जाता है। इसे छोड़ने से संकलन त्रुटि होगी।

संबंधित: क्या जूलिया पाइथन के सिंहासन के लिए बोली लगाएगी?

वर्ग परिभाषाएँ, विधि परिभाषाएँ, लूप, और यदि कथन कोड कार्यान्वयन की अपेक्षा करते हैं। तो, उन्हें बाहर छोड़ना एक संकलन त्रुटि देता है। इससे बचने के लिए, खाली कोड को बदलने के लिए पास का उपयोग करें।

पायथन में एक अमूर्त विधि को परिभाषित करने के लिए, @abstractmethod डेकोरेटर का उपयोग करें:

 from abc import ABC, abstractmethod
class AbstractClassName(ABC):
@abstractmethod
def abstractMethod(self):
pass

इस बिंदु पर, यह उल्लेख करना अच्छा होगा कि – जावा के विपरीत – पायथन में सार विधियों का कार्यान्वयन हो सकता है .. इस कार्यान्वयन को ओवरराइडिंग विधि में सुपर () विधि का उपयोग करके पहुँचा जा सकता है।

 import abc
class AbstractClass(ABC):
def __init__(self, value):
self.value = value
super().__init__()
@abc.abstractmethod
def some_action(self):
print("This is the parent implementation.")
class MySubclass(AbstractClassExample):
def some_action(self):
super().some_action()
print("This is the subclass implementation. ")
x = MySubclass()
x.some_action()

यह ध्यान रखना दिलचस्प है कि आप एक कंस्ट्रक्टर को एक अमूर्त वर्ग में परिभाषित कर सकते हैं।

लाइन 9 पर, आप देख सकते हैं कि @abc.abstractmethod का उपयोग एब्स्ट्रैक्ट मेथड डेकोरेटर के रूप में किया गया है। यह पिछले फॉर्म के अलावा ऐसा करने का एक और तरीका है। यह भी ध्यान दें कि आपके द्वारा उपयोग किए गए पूर्व पंक्ति 1 आयात की तुलना में पंक्ति 1 छोटी ( आयात abc ) है।

यह सब पसंद की बात है। हालांकि, कई लोगों को दूसरी विधि छोटी लग सकती है।

पायथन में अपवाद हैंडलिंग

ध्यान दें कि ऊपर दिए गए कोड उदाहरण में त्रुटियों को पकड़ने का कोई तरीका नहीं है। कीड़े अधिक बार नहीं होते हैं, और उन्हें प्राप्त करने का एक विश्वसनीय तरीका गेम-चेंजर हो सकता है।

सामान्य कार्यक्रम प्रवाह को बाधित करने वाली इन घटनाओं को "अपवाद" कहा जाता है, और उन्हें प्रबंधित करने को "अपवाद प्रबंधन" कहा जाता है। आपकी पायथन पठन सूची में अगला अपवाद हैंडलिंग होना चाहिए।