पाठ 25 / 49

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

Inheritance से classes reuse और extend करें, methods override करें, super() बुलाएँ और MRO समझें।

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

उपवर्ग को अपने अभिभावक से सब कुछ मिलता है और वह मेथड जोड़ या ओवरराइड कर सकता है। 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) से खोजता है — पर ज़्यादातर असल कोड में एकल-इनहेरिटेंस ही काफ़ी है।