# इनहेरिटेंस और ओवरराइडिंग — पायथन

Source: https://www.geekswithgeeks.com/hi/python/py-inheritance

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

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

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

```python
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) से खोजता है — पर ज़्यादातर असल कोड में एकल-इनहेरिटेंस ही काफ़ी है।
