ในบทความนี้ เราจะเรียนรู้เกี่ยวกับการสืบทอดและการขยายคลาสใน Python 3.x หรือเวอร์ชันก่อนหน้า
การสืบทอดแสดงความสัมพันธ์ในโลกจริงได้ดี ให้ความสามารถในการนำกลับมาใช้ใหม่ (reusability) และรองรับการสืบทอดแบบถดถอย (transitivity) มีเวลาพัฒนาที่เร็วขึ้น การบำรุงรักษาที่ง่ายขึ้น และง่ายต่อการขยาย
การสืบทอดแบ่งได้กว่า 5 ประเภท −
- Single (เดี่ยว)
- Multiple (หลาย)
- Hierarchical (ลำดับชั้น)
- Multi-level (หลายระดับ)
- Hybrid (ผสม)

ตามที่แสดงในภาพด้านบน การสืบทอดคือกระบวนการที่เราพยายามเข้าถึงคุณสมบัติของคลาสอื่นๆ โดยไม่ต้องสร้างออบเจกต์ของคลาสพาเรนต์ (parent class) จริงๆ
ที่นี่เราจะเรียนรู้การนำไปใช้งานของ Single และ Hierarchical inheritance
Single Inheritance
ตัวอย่าง
# parent class
class Student():
# constructor ของ parent class
def __init__(self, name, enrollnumber):
self.name = name
self.enrollnumber = enrollnumber
def display(self):
print(self.name)
print(self.enrollnumber)
# child class
class College(Student):
def __init__(self, name, enrollnumber, admnyear, branch):
self.admnyear = admnyear
self.branch = branch
# เรียก __init__ ของ parent class
Student.__init__(self, name, enrollnumber)
# สร้างออบเจกต์สำหรับ base/derived class
obj = College('Rohit', 42414802718, 2018, "CSE")
obj.display()
ผลลัพธ์
Rohit 42414802718
Multiple Inheritance
ตัวอย่าง
# parent class
class Student():
# constructor ของ parent class
def __init__(self, name, enrollnumber):
self.name = name
self.enrollnumber = enrollnumber
def display(self):
print(self.name)
print(self.enrollnumber)
# child class
class College(Student):
def __init__(self, name, enrollnumber, admnyear, branch):
self.admnyear = admnyear
self.branch = branch
# เรียก __init__ ของ parent class
Student.__init__(self, name, enrollnumber)
# child class
class University(Student):
def __init__(self, name, enrollnumber, refno, branch):
self.refno = refno
self.branch = branch
# เรียก __init__ ของ parent class
Student.__init__(self, name, enrollnumber)
# สร้างออบเจกต์สำหรับ base/derived class
obj_1 = College('Rohit', 42414802718, 2018, "CSE")
obj_1.display()
obj_2 = University('Rohit', 42414802718, "st2018", "CSE")
obj_2.display()
ผลลัพธ์
Rohit 42414802718 Rohit 42414802718
สรุป
ในบทความนี้ เราได้เรียนรู้เกี่ยวกับ Inheritance ใน Python โดยครอบคลุม Single และ Hierarchical inheritance