
Polymorphism คืออะไร?
ความหลากหลายสามารถกำหนดเป็นเงื่อนไขที่เกิดขึ้นในหลายรูปแบบ เป็นแนวคิดในการเขียนโปรแกรม Python ซึ่งวัตถุที่กำหนดใน Python สามารถนำมาใช้ในรูปแบบต่างๆ อนุญาตให้โปรแกรมเมอร์กำหนดวิธีการต่าง ๆ ในคลาสที่ได้รับ และมีชื่อเดียวกับที่มีอยู่ในคลาสพาเรนต์ สถานการณ์ดังกล่าวรองรับวิธีการโอเวอร์โหลดใน Python
ในบทช่วยสอน Python Polymorphism คุณจะได้เรียนรู้:
- Polymorphism คืออะไร?
 - ความหลากหลายในตัวดำเนินการ
 - ความหลากหลายในวิธีการที่ผู้ใช้กำหนด
 - ความหลากหลายในฟังก์ชัน
 - ความหลากหลายและการสืบทอด
 - ความแตกต่างกับวิธีการเรียน
 - ความแตกต่างระหว่างวิธีการโอเวอร์โหลดและ Polymorphism เวลาคอมไพล์
 
ความหลากหลายในตัวดำเนินการ
ตัวดำเนินการใน Python ช่วยดำเนินการทางคณิตศาสตร์และงานเขียนโปรแกรมอื่นๆ อีกหลายอย่าง ตัวอย่างเช่น ตัวดำเนินการ '+' ช่วยในการเพิ่มระหว่างประเภทจำนวนเต็มสองประเภทใน Python และในทำนองเดียวกัน โอเปอเรเตอร์เดียวกันจะช่วยในการเชื่อมสตริงในการเขียนโปรแกรม Python
ให้เรายกตัวอย่างของตัวดำเนินการ + (บวก) ใน Python เพื่อแสดงแอปพลิเคชันของ Polymorphism ใน Python ดังที่แสดงด้านล่าง:
รหัสหลาม:
p = 55
q = 77
r = 9.5
g1 = "ปราชญ์"
g2 = "99!"
พิมพ์ ("ผลรวมของตัวเลขสองตัว", p + q)
print("ชนิดข้อมูลของผลลัพธ์คือ",type(p + q))
print("ผลรวมของตัวเลขสองตัว",q + r)
พิมพ์ ("ประเภทข้อมูลของผลลัพธ์คือ" ประเภท (q + r))
พิมพ์ ("สตริงที่ต่อกันคือ", g1 + g2)
print("ประเภทข้อมูลของสองสตริง",type(g1 + g2))
เอาท์พุท:
ผลรวมของสองตัวเลข 132 ชนิดข้อมูลของผลลัพธ์คือ <class 'int'> ผลรวมของทั้งสองตัวเลข 86.5 ชนิดข้อมูลของผลลัพธ์คือ <class 'float'> สตริงที่ต่อกันคือ Guru99! ชนิดข้อมูลของสองสตริง <class 'str'>
ตัวอย่างข้างต้นถือได้ว่าเป็นตัวอย่างของการโอเวอร์โหลดโอเปอเรเตอร์
ความหลากหลายในวิธีการที่ผู้ใช้กำหนด
วิธีการกำหนดโดยผู้ใช้ในภาษาการเขียนโปรแกรม Python เป็นวิธีที่ผู้ใช้สร้างขึ้นและประกาศโดยใช้คำหลัก def พร้อมชื่อฟังก์ชัน
ความแตกต่างในภาษาการเขียนโปรแกรม Python ทำได้โดยวิธีการโอเวอร์โหลดและการแทนที่ Python กำหนดวิธีการด้วยคำหลัก def และมีชื่อเดียวกันทั้งในคลาสลูกและพาเรนต์
ให้เรายกตัวอย่างดังต่อไปนี้ที่แสดงด้านล่าง: –
รหัสหลาม:
จากคณิตศาสตร์
นำเข้าpi
คลาสสแควร์:
    def __init__ (ตัวเอง, ความยาว):
    self.l = ความยาว
def ปริมณฑล (ตัวเอง):
    ส่งคืน 4 * (self.l)
พื้นที่ def (ตัวเอง):
    กลับ self.l * self.l
วงคลาส:
    def __init__ (ตัวเอง, รัศมี):
    self.r = รัศมี
def ปริมณฑล (ตัวเอง):
    ส่งคืน 2 * pi * self.r
พื้นที่ def (ตัวเอง):
    ส่งคืน pi * self.r * * 2
#เริ่มต้นคลาส
sqr = สี่เหลี่ยม (10)
c1 = วงกลม(4)
print("ปริมณฑลคำนวณสำหรับสี่เหลี่ยม: ", sqr.perimeter())
print("พื้นที่คำนวณสำหรับสี่เหลี่ยม: ", sqr.area())
print("ปริมณฑลคำนวณสำหรับ Circle: ", c1.perimeter())
print("พื้นที่คำนวณสำหรับ Circle: ", c1.area())
เอาท์พุท:
ปริมณฑลคำนวณสำหรับสี่เหลี่ยมจัตุรัส: 40 พื้นที่คำนวณสำหรับตาราง: 100 เส้นรอบวงคำนวณสำหรับวงกลม: 25.132741228718345 พื้นที่คำนวณสำหรับ Circle: 50.26548245743669
ในโค้ดด้านบนนี้ มีวิธีที่ผู้ใช้กำหนดสองวิธี คือ ปริมณฑลและพื้นที่ ซึ่งกำหนดไว้ในคลาสวงกลมและสี่เหลี่ยม
ดังที่แสดงไว้ข้างต้น ทั้งคลาสแบบวงกลมและคลาสสแควร์เรียกชื่อเมธอดเดียวกันเพื่อแสดงคุณสมบัติของโพลิมอร์ฟิซึมเพื่อส่งมอบเอาต์พุตที่ต้องการ
ความหลากหลายในฟังก์ชัน
ฟังก์ชันในตัวใน Python ได้รับการออกแบบและรองรับการรันข้อมูลหลายประเภท ใน Python Len()เป็นหนึ่งในฟังก์ชั่นที่สำคัญในตัว
ใช้งานได้กับข้อมูลหลายประเภท: รายการ ทูเพิล สตริง และพจนานุกรม ฟังก์ชัน Len () ส่งคืนข้อมูลที่แน่นอนซึ่งสอดคล้องกับข้อมูลหลายประเภทเหล่านี้
รูปต่อไปนี้แสดงวิธีการใช้ Polymorphism ใน Python ที่สัมพันธ์กับฟังก์ชันที่สร้างขึ้น: –

โปรแกรมต่อไปนี้ช่วยในการอธิบายการประยุกต์ใช้ Polymorphism ใน Python: –
รหัสหลาม:
พิมพ์ ("ความยาวของสตริง Guru99 คือ ",len("Guru99"))
print("ความยาวของรายการคือ ,len(["Guru99","Example","Reader"]))
print("ความยาวของพจนานุกรมคือ ",len({"ชื่อเว็บไซต์":"Guru99","Type":"Education"}))
เอาท์พุท:
ความยาวของสาย Guru99 คือ 6 ความยาวของรายการคือ3 ความยาวของพจนานุกรมคือ2

ในตัวอย่างข้างต้น ฟังก์ชัน Len () ของ Python ดำเนินการ Polymorphism สำหรับประเภทข้อมูลสตริง รายการ และพจนานุกรม ตามลำดับ
ความหลากหลายและการสืบทอด
การสืบทอดใน Python สามารถกำหนดเป็นแนวคิดการเขียนโปรแกรมที่คลาสย่อยกำหนดคุณสมบัติสืบทอดจากคลาสฐานอื่นที่มีอยู่ใน Python
มีสองแนวคิดหลักของ Python ที่เรียกว่า method overriding และ method overloading
- ในการโอเวอร์โหลดเมธอด Python มีคุณสมบัติในการสร้างเมธอดที่มีชื่อเดียวกันเพื่อดำเนินการหรือรันฟังก์ชันต่างๆ ในส่วนโค้ดที่กำหนด อนุญาตให้ใช้วิธีการโอเวอร์โหลดและใช้เพื่อทำงานต่าง ๆ ในแง่ที่ง่ายกว่า
 - ในการแทนที่เมธอด Python จะแทนที่ค่าที่ใช้ชื่อที่คล้ายกันในคลาสพาเรนต์และคลาสย่อย
 
ให้เรายกตัวอย่างต่อไปนี้ของ Polymorphism and inheritance ดังที่แสดงด้านล่าง: –
รหัสหลาม:
คลาสเบสคลาส:
    def __init__ (ตัวเอง, ชื่อ):
    self.name = ชื่อ
def area1(ตัวเอง):
    ผ่าน
def __str__(ตัวเอง):
    กลับชื่อตัวเอง
คลาสสี่เหลี่ยมผืนผ้า (เบสคลาส):
    def __init__(ตัวเอง ความยาว ความกว้าง):
    super().__init__("สี่เหลี่ยมผืนผ้า")
self.length = ความยาว
self.breadth = ความกว้าง
def area1(ตัวเอง):
    กลับความยาวตัวเอง * self.breadth
คลาสสามเหลี่ยม(เบสคลาส):
    def __init__(ตัวเอง ความสูง ฐาน):
    super().__init__("สามเหลี่ยม")
self.height = ความสูง
self.base = ฐาน
def area1(ตัวเอง):
    ผลตอบแทน (self.base * self.height) / 2
a = สี่เหลี่ยมผืนผ้า (90, 80)
b = สามเหลี่ยม(77, 64)
print("รูปร่างคือ: ", b)
print("พื้นที่ของรูปทรงคือ", b.area1())
พิมพ์ ("รูปร่างคือ:", ก)
print("พื้นที่ของรูปทรงคือ", a.area1())
เอาท์พุท:
รูปร่างคือ: สามเหลี่ยม พื้นที่ของรูปทรงคือ 2464.0 รูปร่างคือ: สี่เหลี่ยมผืนผ้า พื้นที่ของรูปทรงคือ 7200
ในโค้ดข้างต้น เมธอดมีชื่อเดียวกับเมธอด init และเมธอด area1 วัตถุของคลาสสแควร์และสี่เหลี่ยมจะใช้เพื่อเรียกใช้ทั้งสองวิธีเพื่อทำงานที่แตกต่างกันและให้ผลลัพธ์ของพื้นที่ของสี่เหลี่ยมและสี่เหลี่ยม
ความแตกต่างกับวิธีการเรียน
การเขียนโปรแกรม Python ช่วยให้โปรแกรมเมอร์บรรลุ Polymorphism และการโอเวอร์โหลดเมธอดด้วยเมธอดของคลาส คลาสต่างๆ ใน Python สามารถมีเมธอดที่ประกาศในชื่อเดียวกันในโค้ด Python
ใน Python สามารถกำหนดคลาสที่แตกต่างกันได้สองคลาส คลาสแรกจะเป็นคลาสลูก และมาจากแอททริบิวจากคลาสอื่นที่กำหนดไว้ซึ่งเรียกว่าคลาสพาเรนต์
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงแนวคิดของ Polymorphism ด้วยวิธีการเรียน: –
รหัสหลาม:
คลาสอเมซอน:
    def __init__(ตัวเอง, ชื่อ, ราคา):
    self.name = ชื่อ
self.price = ราคา
ข้อมูล def (ตัวเอง):
    print("นี่คือผลิตภัณฑ์และคลาส am ถูกเรียกใช้ ชื่อคือ {self.name} ค่าใช้จ่ายนี้ {self.price} รูปี")
ฟลิปคาร์ทคลาส:
    def __init__(ตัวเอง, ชื่อ, ราคา):
    self.name = ชื่อ
self.price = ราคา
ข้อมูล def (ตัวเอง):
    พิมพ์ (f "นี่คือผลิตภัณฑ์และคลาส fli ถูกเรียกใช้ ชื่อคือ {self.name} ค่าใช้จ่ายนี้ {self.price} รูปี")
FLP = flipkart ("iPhone", 2.5)
AMZ = อเมซอน ("ไอโฟน", 4)
สำหรับ product1 ใน (FLP, AMZ):
    product1.info()
เอาท์พุท:
นี่คือผลิตภัณฑ์ และคลาส fli ถูกเรียกใช้ ชื่อคือ iPhone และมีราคา 2.5 รูปี นี่คือผลิตภัณฑ์ และคลาส am ถูกเรียกใช้ ชื่อคือ iPhone และมีราคา 4 รูปี
ในโค้ดด้านบน คลาสที่แตกต่างกันสองคลาสที่ตั้งชื่อเป็น flipkart และ amazon ใช้ชื่อเมธอดเดียวกัน info และ init เพื่อเสนอราคาผลิตภัณฑ์ตามลำดับ และแสดงแนวคิดของ Polymorphism เพิ่มเติมใน Python
ความแตกต่างระหว่างวิธีการโอเวอร์โหลดและ Polymorphism เวลาคอมไพล์
ในเวลาคอมไพล์ Polymorphism คอมไพเลอร์ของโปรแกรม Python จะแก้ไขการโทร Compile-time Polymorphism ทำได้โดยใช้วิธีการโอเวอร์โหลด
คอมไพเลอร์ Python ไม่แก้ไขการโทรระหว่างรันไทม์สำหรับความหลากหลาย นอกจากนี้ยังจัดประเภทเป็นวิธีการแทนที่ซึ่งวิธีการเดียวกันมีลายเซ็นหรือคุณสมบัติที่คล้ายกัน แต่เป็นส่วนหนึ่งของคลาสที่แตกต่างกัน
สรุป:
- ความหลากหลายสามารถกำหนดเป็นเงื่อนไขที่เกิดขึ้นในหลายรูปแบบ
 - ตัวดำเนินการใน Python ช่วยดำเนินการทางคณิตศาสตร์และงานเขียนโปรแกรมอื่นๆ อีกหลายอย่าง
 - วิธีการกำหนดโดยผู้ใช้ในภาษาการเขียนโปรแกรม Python เป็นวิธีที่ผู้ใช้สร้างขึ้นและประกาศโดยใช้คำหลัก def พร้อมชื่อฟังก์ชัน
 - Polymorphism ใน Python มีคุณสมบัติที่พึงประสงค์หลายประการ เช่น ส่งเสริมการนำรหัสกลับมาใช้ใหม่ได้สำหรับคลาสและเมธอดต่างๆ
 - คลาสลูกเป็นคลาสที่ได้รับ และได้รับแอททริบิวจากคลาสพาเรนต์
 - ความหลากหลายยังเกิดขึ้นได้ด้วยการแทนที่เมธอดรันไทม์และการโอเวอร์โหลดเมธอดเวลาคอมไพล์
 - ความหลากหลายใน Python ยังเกิดขึ้นได้จากการโอเวอร์โหลดตัวดำเนินการและเมธอดของคลาส
 











EXPLORE MORE
Learn Java Programming with Beginners Tutorial08:32
Linux Tutorial for Beginners: Introduction to Linux Operating...01:35
What is Integration Testing Software Testing Tutorial03:04
What is JVM (Java Virtual Machine) with Architecture JAVA...02:24
How to write a TEST CASE Software Testing Tutorial01:08
Seven Testing Principles Software Testing05:01
Linux File Permissions Commands with Examples13:29
How to use Text tool in Photoshop CC Tutorial08:32
What is NoSQL Database Tutorial02:00
Important Linux Commands for Beginners Linux Tutorial15:03



















