पाठ 25 / 47

इनहेरिटेंस और ओवरराइडिंग

मौजूदा क्लास पर नई क्लास बनाएँ, और व्यवहार को अनुकूलित करें।

क्लास का विस्तार

उपवर्ग को अपने अभिभावक से सब कुछ मिलता है और वह मेथड जोड़ या ओवरराइड कर सकता है। super() अभिभावक का संस्करण कॉल करता है।

class Animal:
    def __init__(self, name):
        self.name = name
    def speak(self):
        return f"{self.name} makes a sound"

class Dog(Animal):
    def speak(self):                 # override
        base = super().speak()
        return f"{base}: Woof!"

print(Dog("Rex").speak())

संक्षेप में MRO

पायथन बहु-इनहेरिटेंस समर्थित करता है और मेथड को MRO (Method Resolution Order) से खोजता है — पर ज़्यादातर असल कोड में एकल-इनहेरिटेंस ही काफ़ी है।