การสืบทอดใน Python | Python Inheritance [พร้อมตัวอย่าง]
เผยแพร่แล้ว: 2020-12-14Python เป็นหนึ่งในภาษาโปรแกรมที่ได้รับความนิยมมากที่สุด แม้จะมีการเปลี่ยนแปลง เต็มรูปแบบ จากเวอร์ชัน Python 2 เป็น Python 3 แต่ภาษาการเขียนโปรแกรมเชิงวัตถุก็ได้รับความนิยมเพิ่มขึ้นอย่างมาก
หากคุณวางแผนสำหรับอาชีพในฐานะนักพัฒนา Python คุณจะต้องมีผลตอบแทนที่สูงขึ้น เนื่องจาก เงินเดือนเฉลี่ย สำหรับนักพัฒนา Python อยู่ที่ประมาณ $119,082 ต่อปี แต่ก่อนที่คุณจะดำเนินการกับโปรแกรมการเรียนรู้ Python นี่คือสิ่งที่คุณควรทราบก่อน - การสืบทอดใน Python ตรวจสอบการรับรองด้านวิทยาศาสตร์ข้อมูลของเรา หากคุณต้องการได้รับความเชี่ยวชาญใน python และเครื่องมืออื่นๆ
มาเริ่มกันก่อนว่ามรดกใน Python คืออะไร?
สารบัญ
มรดกใน Python คืออะไร?
เช่นเดียวกับความสัมพันธ์แบบพ่อแม่และลูก การสืบทอดทำงานบนคลาสที่ได้รับซึ่งสัมพันธ์กับคลาสพื้นฐาน คลาส "Derived" ทุกคลาสจะสืบทอดมาจากคลาส "Base" การสืบทอดจะแสดงใน UML หรือ Unified Modeling Language เป็นภาษาการสร้างแบบจำลองมาตรฐานที่รวมชุดไดอะแกรมที่รวมเข้าด้วยกันเพื่อช่วยนักพัฒนาระบุ โครงสร้าง และจัดทำเอกสารองค์ประกอบของระบบซอฟต์แวร์
ความสัมพันธ์แบบสืบทอดกำหนดคลาสที่สืบทอดจากคลาสอื่นเป็นคลาสที่ได้รับ คลาสย่อย หรือคลาสย่อย คลาสพื้นฐานยังคงเป็นแหล่งที่มาจากคลาสย่อยที่สืบทอดมา ตัวอย่างเช่น คุณมีคลาสพื้นฐานของ "สัตว์" และ "สิงโต" เป็นคลาสที่ได้รับ มรดกจะเป็นสิงโตเป็นสัตว์
คำถามคือ คลาส "สิงโต" สืบทอดมาจาก "สัตว์" อย่างไร?
คลาส "สิงโต" สืบทอด
- อินเตอร์เฟซ
- การดำเนินการ
หมายเหตุ: คุณสามารถแทนที่อ็อบเจ็กต์ Derived Class ด้วยอ็อบเจ็กต์ Base Class ในแอปพลิเคชันที่เรียกว่า หลักการ ทดแทน Liskov แสดงว่าหากโปรแกรมคอมพิวเตอร์มีอ็อบเจ็กต์ P เป็นชนิดย่อยของ Q คุณสามารถแทนที่ P ด้วย Q ได้อย่างง่ายดายโดยไม่ต้องเปลี่ยนแปลงคุณสมบัติ
ชำระเงินด้วย: เงินเดือนนักพัฒนา Python ในอินเดีย
ข้อดีของการสืบทอดใน Python
- การสืบทอดใน Python ช่วยให้นักพัฒนาสามารถนำวัตถุกลับมาใช้ใหม่ได้
- ทุกครั้งที่คลาสรับช่วงคลาสพื้นฐาน คลาสจะเข้าถึงฟังก์ชันการทำงานของอ็อบเจ็กต์หลัก
- การนำกลับมาใช้ใหม่ได้เนื่องจากการสืบทอดนั้นยังเชื่อถือได้เนื่องจากคลาสพื้นฐานได้รับการทดสอบแล้ว
- เวลาและต้นทุนในการพัฒนาต่ำ
- การกำหนดมาตรฐานของอินเทอร์เฟซข้ามคลาสกลายเป็นเรื่องง่าย
- ลดความซ้ำซ้อนของโค้ดและช่วยปรับปรุงความสามารถในการขยาย
- การสร้างไลบรารีของคลาสกลายเป็นเรื่องง่าย
ประเภทของมรดกใน Python
มรดกเดี่ยว
เราได้เห็นแล้วว่าการสืบทอดเดี่ยวคืออะไร - การสืบทอดของคลาส "สืบเนื่อง" จากคลาส "ฐาน" มาทำความเข้าใจกันด้วยตัวอย่าง
ระดับประเทศ:
def ShowCountry(ตัวเอง):
พิมพ์("นี่คือสเปน");
คลาสรัฐ(ประเทศ):
def ShowState (ตัวเอง):
พิมพ์("นี่คือรัฐ");
st = สถานะ ();
st.ShowCountry();
st.ShowState();
มรดกหลายระดับ
Python ถูกสร้างขึ้นจากหลายอ็อบเจ็กต์ และด้วยการสืบทอดหลายระดับ จึงมีความเป็นไปได้ไม่รู้จบในการใช้ฟังก์ชันของคลาสซ้ำ การสืบทอดหลายระดับได้รับการบันทึกทุกครั้งที่คลาสที่ได้รับสืบทอดคลาสที่ได้รับอื่น ไม่มีการจำกัดจำนวนของคลาสที่ได้รับที่สามารถสืบทอดฟังก์ชันได้ และนั่นคือสาเหตุที่การสืบทอดหลายระดับช่วยปรับปรุงความสามารถในการใช้ซ้ำใน Python
นี่คือตัวอย่างมรดกหลายระดับ
สัตว์ประจำชั้น:
def พูด (ตัวเอง):
พิมพ์("สัตว์พูด")
#น้องหมาคลาสเด็ก สืบทอดคลาสสัตว์พื้นฐาน
คลาส Dog(สัตว์):
def bark (ตัวเอง):
พิมพ์("สุนัขเห่า")
#ลูก Dogchild สืบทอดคลาสลูก Dog อีกชั้น
คลาส DogChild(สุนัข):
def กิน (ตัวเอง):
พิมพ์(“กินขนมปัง…”)
d = DogChild()
ง.เปลือก()
ง.พูด()
ง. กิน()
มรดกหลายอย่าง
Python ช่วยให้นักพัฒนาสามารถสืบทอดฟังก์ชันและคุณสมบัติหลายอย่างจากคลาสพื้นฐานที่แตกต่างกันไปเป็นคลาสที่ได้รับเดียว ส่วนใหญ่เป็นคุณสมบัติที่ยอดเยี่ยมเนื่องจากช่วยให้คุณสามารถสืบทอดการพึ่งพาหลายรายการโดยไม่ต้องใช้เครื่องมือหรือการเข้ารหัสที่กว้างขวาง
ลองดูตัวอย่างสำหรับการสืบทอดหลายรายการ
การคำนวณระดับ 1:
สรุปผลรวม (ตัวเอง, ก, ข):
กลับ a+b;
การคำนวณระดับ 2:
def การคูณ (ตัวเอง, a, b):
ส่งคืน a*b;
คลาสที่ได้รับ(Calculation1,Calculation2):
def Divide(ตัวเอง,a,b):
กลับ a/b;

d = ได้มา ()
พิมพ์(ง.ผลรวม(10,20))
พิมพ์(ง.คูณ(10,20))
พิมพ์(ง.หาร(10,20))
ชำระเงิน: วิธีแปลงคำพูดเป็นข้อความด้วย Python
จะระบุ Derived Class ได้อย่างไร?
Python มาพร้อมกับฟังก์ชัน issubclass() ในตัวที่ช่วยให้นักพัฒนาตรวจสอบว่าคลาสนั้นเป็นคลาสที่ได้รับหรือคลาสฐาน เมื่อคุณเรียกใช้ฟังก์ชันนี้ ฟังก์ชันจะส่งคืนพร้อมผลลัพธ์ "True" สำหรับคลาสย่อยหรือคลาส Derived ขณะที่ False สำหรับคลาส Base
นักพัฒนาสามารถตรวจสอบชั้นเรียนผ่านตัวอย่างนี้
คลาส myAge:
อายุ = 36
คลาส myObj (myAge):
ชื่อ = “จอห์น”
อายุ = myAge
x = issubclass (myObj, myAge)
จะสร้างลำดับชั้นของคลาสใน Python ได้อย่างไร?
การสืบทอดใน Python ช่วยสร้างลำดับชั้นของคลาส คลาสที่เกี่ยวข้องทั้งหมดจะใช้อินเทอร์เฟซร่วมกันเพื่อสื่อสารระหว่างกัน คลาสฐานกำหนดอินเทอร์เฟซ คลาสที่ได้รับสามารถให้ความเชี่ยวชาญเฉพาะของอินเทอร์เฟซ ที่นี่ เรากำลังสำรวจโมเดล HR เพื่อแสดงลำดับชั้นของคลาส
ระบบ HR จะประมวลผลเงินเดือนสำหรับพนักงานในบริษัทต่างๆ ผู้ปฏิบัติงานแต่ละคนจะถูกระบุผ่าน ID และมีตำแหน่งการจ่ายเงินเดือนที่แตกต่างกันเพื่อคำนวณ
ขั้นแรกให้สร้างคลาสบัญชีเงินเดือนเป็นออบเจกต์ "ฐาน"
# ใน hr.py
ระบบบัญชีเงินเดือน:
def คำนวณ_payroll (ตัวเอง, คนงาน):
พิมพ์('การคำนวณเงินเดือน')
พิมพ์('===================')
สำหรับคนงานในคนงาน:
พิมพ์ (f'Payroll สำหรับ: {worker.id} – {worker.name}')
พิมพ์ (f'- ตรวจสอบจำนวนเงิน: {worker.calculate_payroll()}')
พิมพ์(")
PayrollSystem ดำเนินการ เมธอด .calculate_payroll() ที่รวบรวมข้อมูลของพนักงาน พิมพ์ id ชื่อ และตรวจสอบจำนวนเงินค่า จ้าง ตอนนี้ คุณเรียกใช้ ผู้ปฏิบัติงาน คลาสพื้นฐาน ที่จัดการกับอินเทอร์เฟซมาตรฐานสำหรับผู้ปฏิบัติงานทุกประเภท:
# ใน hr.py
คนงานในชั้นเรียน:
def __init__(ตัวเอง, id, ชื่อ):
self.id = id
self.name = ชื่อ
การสร้างคลาสพื้นฐานของผู้ปฏิบัติงานสำหรับผู้ปฏิบัติงานทุกประเภทในบริษัททำให้ลำดับชั้นง่ายขึ้นสำหรับระบบ HR ผู้ปฏิบัติงานทุกคนได้รับมอบหมายชื่อและรหัส ระบบ HR กำหนดให้พนักงานต้องให้ข้อมูลเกี่ยวกับเงินเดือนประจำสัปดาห์ผ่านอินเทอร์เฟซ .calculate_payroll() การดำเนินการของอินเทอร์เฟซนี้อาจแตกต่างกันไปตามประเภทของผู้ปฏิบัติงาน
ต้องอ่าน: คำถามสัมภาษณ์ Python
บทสรุป
ที่นี่ เราเรียนรู้ที่จะสร้างคลาส Python ต่างๆ สร้างความสัมพันธ์ระหว่างคลาสเหล่านั้น และแม้กระทั่งกำหนดลำดับชั้นของคลาส แต่การสืบทอดใน Python ไม่ได้จำกัดอยู่เพียงฟังก์ชันการทำงานที่กล่าวถึงที่นี่
การรับรองขั้นสูงในการเรียนรู้ของเครื่องและ AI : IIT madras ซึ่งเป็นหนึ่งในสถาบันการศึกษาที่ดีที่สุดของอินเดีย ได้ร่วมมือกับ upGrad เพื่อสร้างหลักสูตรขั้นสูงเกี่ยวกับการเรียนรู้ของเครื่องเพื่อให้บุคคลทั่วไปมีความรู้เกี่ยวกับการเรียนรู้ของเครื่องด้วยหลักสูตรนี้
หากคุณอยากเรียนรู้เกี่ยวกับวิทยาศาสตร์ข้อมูล ลองดู โปรแกรม Executive PG ของ IIIT-B & upGrad ใน Data Science ซึ่งสร้างขึ้นสำหรับมืออาชีพที่ทำงานและมีกรณีศึกษาและโครงการมากกว่า 10 รายการ เวิร์กช็อปภาคปฏิบัติจริง การให้คำปรึกษากับผู้เชี่ยวชาญในอุตสาหกรรม 1 -on-1 พร้อมที่ปรึกษาในอุตสาหกรรม การเรียนรู้มากกว่า 400 ชั่วโมงและความช่วยเหลือด้านงานกับบริษัทชั้นนำ
เหตุใดการสืบทอดจึงมีความสำคัญใน Python
การสืบทอดหมายถึงกระบวนการส่งต่อคุณสมบัติของคลาสพาเรนต์ไปยังคลาสย่อย เป็นแนวคิดการเขียนโปรแกรมเชิงวัตถุ (OOP) และมีความสำคัญใน Python เป็นเพราะการสืบทอดทำให้โค้ดสามารถนำกลับมาใช้ใหม่ได้ ซึ่งหมายความว่าแทนที่จะเขียนโค้ดเดิมซ้ำแล้วซ้ำอีก เราสามารถสืบทอดแอตทริบิวต์ที่เราต้องการในคลาสย่อยได้ นอกจากนี้ยังง่ายต่อการเข้าใจและนำไปใช้ เนื่องจากแสดงให้เห็นความสัมพันธ์ในโลกแห่งความเป็นจริงระหว่างชั้นเรียนหลักและชั้นเรียนย่อย มันมีลักษณะสกรรมกริยา เนื่องจากคลาสย่อยทั้งหมดสืบทอดคุณสมบัติจากพาเรนต์ คลาสย่อยใดๆ จะใช้ฟังก์ชันของคลาสพาเรนต์เช่นเดียวกัน
การสืบทอดจำเป็นในขณะที่เรียนรู้ Python หรือไม่?
ใช่ การเรียนรู้การสืบทอดเป็นสิ่งจำเป็นในขณะที่เรียนรู้ Python แอปพลิเคชั่นไพ ธ อนจำนวนมากจำเป็นต้องเพิ่มจำนวนโปรแกรมเมอร์ไพ ธ อนในตลาดปัจจุบัน การเพิ่มขึ้นอย่างรวดเร็วนี้ทำให้จำนวนผู้ที่เรียนรู้ Python เพิ่มขึ้น ภาษาโปรแกรม Python อุดมไปด้วยแนวคิดเช่นการสืบทอด หนึ่งในแนวคิดที่สำคัญในภาษาการเขียนโปรแกรมเชิงวัตถุคือการสืบทอด เนื่องจากการสืบทอดช่วยให้โค้ดสามารถนำกลับมาใช้ใหม่ได้ ความสามารถในการอ่านได้ และการเปลี่ยนคุณสมบัติ การเรียนรู้ในขณะที่เรียนรู้ Python จึงมีความจำเป็น การสืบทอดช่วยในการสร้างรหัสที่ถูกต้องและมีประสิทธิภาพ
ใน Python ไม่รองรับการสืบทอดประเภทใด
Python อนุญาตการสืบทอดทุกรูปแบบ รวมถึงการสืบทอดหลายรายการ ซึ่งแตกต่างจากภาษาโปรแกรมเชิงวัตถุอื่นๆ เป็นไปได้ที่จะสร้างคลาสใหม่จากคลาสที่มีอยู่แล้วโดยใช้แนวคิดการสืบทอด สิ่งนี้อำนวยความสะดวกในการใช้รหัสซ้ำ เมธอดที่ระบุในคลาสพาเรนต์ยังใช้ในคลาสย่อยด้วย แม้ว่า C++ จะเปิดใช้งานการสืบทอดประเภทนี้ แต่ก็ขาดวิธีการขั้นสูงและการออกแบบที่ดีของ Python Python ยังเสนอ Hybrid inheritance ซึ่งช่วยให้เราใช้การสืบทอดหลายประเภทในโค้ดชิ้นเดียว เนื่องจากความสามารถในการนำโค้ดกลับมาใช้ใหม่เป็นจุดแข็งของการสืบทอด จึงมีประโยชน์ในแอปพลิเคชันที่หลากหลายเมื่อทำงานกับ Python