การสืบทอดในชั้นเรียน
แทนที่จะกำหนดคลาสใหม่ เราสามารถสร้างคลาสโดยสร้างคลาสจากคลาสที่มีอยู่ก่อนโดยระบุคลาสพาเรนต์ในวงเล็บหลังชื่อคลาสใหม่
คลาสลูกสืบทอดแอตทริบิวต์ของคลาสพาเรนต์ และเราสามารถใช้แอตทริบิวต์เหล่านั้นได้เสมือนว่าถูกกำหนดไว้ในคลาสย่อย คลาสย่อยยังสามารถแทนที่สมาชิกข้อมูลและวิธีการจากพาเรนต์ได้
ไวยากรณ์
คลาสที่ได้รับจะถูกประกาศเหมือนกับคลาสพาเรนต์ อย่างไรก็ตาม รายการของคลาสพื้นฐานที่จะสืบทอดมาจากชื่อคลาส -
class SubClassName (ParentClass1[, ParentClass2, ...]): 'Optional class documentation string' class_suite
ตัวอย่าง
#!/usr/bin/python class Parent: # define parent class parentAttr = 100 def __init__(self): print "Calling parent constructor" def parentMethod(self): print 'Calling parent method' def setAttr(self, attr): Parent.parentAttr = attr def getAttr(self): print "Parent attribute :", Parent.parentAttr class Child(Parent): # define child class def __init__(self): print "Calling child constructor" def childMethod(self): print 'Calling child method' c = Child() # instance of child c.childMethod() # child calls its method c.parentMethod() # calls parent's method c.setAttr(200) # again call parent's method c.getAttr() # again call parent's method
ผลลัพธ์
เมื่อโค้ดด้านบนถูกรัน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
Calling child constructor Calling child method Calling parent method Parent attribute : 200