वारसा एक वर्ग (उपवर्ग या बाल) को दूसरे वर्ग (सुपरक्लास या माता-पिता) के क्षेत्रों और विधियों को पुन: उपयोग और विस्तार करने देता है। यह एक है-ए संबंध को मॉडल करता है: Dog है एक Animal।
वारसा एक वर्ग (उपवर्ग या बाल) को दूसरे वर्ग (सुपरक्लास या माता-पिता) के क्षेत्रों और विधियों को पुन: उपयोग और विस्तार करने देता है। यह एक है-ए संबंध को मॉडल करता है: Dog है एक Animal।
class Animal:
def __init__(self, name):
self.name = name
def eat(self):
return f"{self.name} is eating"
class Dog(Animal): # Dog inherits everything from Animal
def bark(self): # ...and adds new behavior
return "Woof!"
d = Dog("Rex")
print(d.eat()) # "Rex is eating" → inherited, not rewritten
print(d.bark()) # "Woof!" → Dog-specific
Dog को __init__ और eat मुफ्त में मिले और इसने bark जोड़ा। एक उपवर्ग विरासत में मिली विधियों को ओवरराइड भी कर सकता है व्यवहार को बदलने के लिए।
| लाभ | जोखिम |
|---|---|
| साझा कोड का पुन: उपयोग | माता-पिता से कसा हुआ युग्मन |
| वास्तविक पदानुक्रमों को मॉडल करें | नाजुक आधार वर्ग — माता-पिता के परिवर्तन बच्चों को तोड़ते हैं |
| सामान्य प्रकार के माध्यम से बहुरूपता | गहरे पेड़ों का पालन करना मुश्किल हो जाता है |
एक सामान्य दिशानिर्देश: जब संबंध वास्तव में "है-ए" नहीं है तो रचना को वारसे को वरीयता दें।
वारसा सबसे गलत उपयोग की जाने वाली OOP सुविधा है: इसे केवल कोड साझा करने के लिए उपयोग करना लुभावना है, जो असंबंधित वर्गों को जोड़ता है।
यदि सही ढंग से उपयोग किया जाए — केवल वास्तविक है-ए संबंधों के लिए — यह आपको पुन: उपयोग साथ ही बहुरूपता देता है, आपको कई उपप्रकारों को उनके सामान्य माता-पिता के माध्यम से समान रूप से मानने देता है।