Python Tutorials

पाइथन इनहेरिटेंस में महारथ: एक व्यापक गाइड

Spread the love

इनहेरिटेंस ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) का एक आधारशिला है, जो मौजूदा क्लासेस (पैरेंट या सुपरक्लासेस) के आधार पर नई क्लासेस (चाइल्ड या सबक्लासेस) के निर्माण को सक्षम बनाता है। यह कोड पुन: प्रयोज्यता को बढ़ावा देता है, अतिरेक को कम करता है, और एक अच्छी तरह से संरचित कोडबेस को बढ़ावा देता है। यह ट्यूटोरियल पायथन के इनहेरिटेंस मैकेनिज्म में तल्लीन करता है, विभिन्न प्रकारों की खोज करता है और व्यावहारिक अनुप्रयोगों का प्रदर्शन करता है।

विषय-सूची

  1. मेथड ओवरराइडिंग
  2. मल्टीपल इनहेरिटेंस
  3. मल्टीलेवल इनहेरिटेंस
  4. व्यावहारिक उदाहरण: एक आकार पदानुक्रम

मेथड ओवरराइडिंग

मेथड ओवरराइडिंग एक सबक्लास को अपने सुपरक्लास से विरासत में मिले मेथड के लिए एक विशेष कार्यान्वयन प्रदान करने की अनुमति देता है। यह सुपरक्लास को बदले बिना विरासत में मिली व्यवहार को अनुकूलित करता है।


class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        print("Generic animal sound")

class Dog(Animal):
    def speak(self):
        print("Woof!")

class Cat(Animal):
    def speak(self):
        print("Meow!")

animal = Animal("Generic Animal")
animal.speak()  # Output: Generic animal sound

dog = Dog("Buddy")
dog.speak()  # Output: Woof!

cat = Cat("Whiskers")
cat.speak()  # Output: Meow!

super() फ़ंक्शन सुपरक्लास के मेथड तक पहुँच की अनुमति देता है, जिससे सुपरक्लास और सबक्लास दोनों व्यवहारों का उपयोग किया जा सकता है।


class Dog(Animal):
    def speak(self):
        super().speak() 
        print("Woof! (from Dog class)")

मल्टीपल इनहेरिटेंस

पायथन मल्टीपल इनहेरिटेंस को सपोर्ट करता है, जहाँ एक क्लास कई पैरेंट क्लासेस से इनहेरिट करता है, जिससे कार्यक्षमताएँ संयोजित होती हैं। हालाँकि, मेथड नाम संघर्षों (“डायमंड प्रॉब्लम”) के प्रबंधन के लिए सावधानीपूर्वक विचार की आवश्यकता है। C3 रैखिकीकरण का उपयोग करके पायथन का मेथड रेसोल्यूशन ऑर्डर (MRO) पूर्वानुमेय संघर्ष समाधान सुनिश्चित करता है। आप ClassName.__mro__ का उपयोग करके MRO का निरीक्षण कर सकते हैं।


class Flyer:
    def move(self):
        print("Flying!")

class Swimmer:
    def move(self):
        print("Swimming!")

class FlyingFish(Flyer, Swimmer):
    pass

flying_fish = FlyingFish()
print(FlyingFish.__mro__) #Check MRO
flying_fish.move()  # Output: Flying! (Flyer's move is called first due to MRO)

मल्टीलेवल इनहेरिटेंस

मल्टीलेवल इनहेरिटेंस एक पदानुक्रम बनाता है जहाँ एक सबक्लास दूसरे सबक्लास से इनहेरिट करता है, जो स्वयं एक सुपरक्लास से इनहेरिट करता है। यह बढ़ते विशेषज्ञता के साथ मौजूदा क्लासेस पर निर्माण करता है।


class Animal:
    def __init__(self, name):
        self.name = name

class Mammal(Animal):
    def __init__(self, name, fur_color):
        super().__init__(name)
        self.fur_color = fur_color

class Dog(Mammal):
    def __init__(self, name, fur_color, breed):
        super().__init__(name, fur_color)
        self.breed = breed

dog = Dog("Buddy", "Brown", "Golden Retriever")
print(f"{dog.name} is a {dog.breed} with {dog.fur_color} fur.")
# Output: Buddy is a Golden Retriever with Brown fur.

व्यावहारिक उदाहरण: एक आकार पदानुक्रम

आइए एक व्यावहारिक उदाहरण के साथ इनहेरिटेंस को स्पष्ट करें: आकृतियों का एक पदानुक्रम। हम एक आधार Shape क्लास से शुरू करेंगे और इससे Circle और Rectangle क्लासेस प्राप्त करेंगे।


import math

class Shape:
    def __init__(self, name):
        self.name = name

    def area(self):
        raise NotImplementedError("Area method must be implemented in subclasses")

class Circle(Shape):
    def __init__(self, name, radius):
        super().__init__(name)
        self.radius = radius

    def area(self):
        return math.pi * self.radius**2

class Rectangle(Shape):
    def __init__(self, name, width, height):
        super().__init__(name)
        self.width = width
        self.height = height

    def area(self):
        return self.width * self.height

circle = Circle("Circle", 5)
rectangle = Rectangle("Rectangle", 4, 6)

print(f"The area of the {circle.name} is: {circle.area()}")
print(f"The area of the {rectangle.name} is: {rectangle.area()}")

यह उदाहरण दर्शाता है कि कैसे इनहेरिटेंस कोड संगठन और पुन: प्रयोज्यता को कैसे सुगम बनाता है। area मेथड बेस क्लास में परिभाषित किया गया है, जिससे सबक्लासेस को अपनी विशिष्ट क्षेत्र गणनाओं को लागू करने के लिए मजबूर किया जाता है।

यह ट्यूटोरियल पायथन में क्लास इनहेरिटेंस का एक व्यापक परिचय प्रदान करता है। एब्स्ट्रेक्ट बेस क्लासेस, इंटरफेस और डिज़ाइन पैटर्न का आगे अन्वेषण जो इनहेरिटेंस का लाभ उठाते हैं, आपकी OOP दक्षता में महत्वपूर्ण रूप से वृद्धि करेंगे।

प्रातिक्रिया दे

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *