Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ความหลากหลายใน Python


Polymorphism หมายถึง หลายรูปแบบ ใน python เราสามารถหาตัวดำเนินการหรือฟังก์ชันเดียวกันได้หลายรูปแบบ นอกจากนี้ยังมีประโยชน์ในการสร้างคลาสต่าง ๆ ซึ่งจะมีวิธีคลาสที่มีชื่อเดียวกัน ที่ช่วยในการใช้รหัสจำนวนมากและลดความซับซ้อนของรหัส ความหลากหลายยังเชื่อมโยงกับการสืบทอดดังที่เราจะเห็นในตัวอย่างด้านล่าง

พหุสัณฐานในตัวดำเนินการ

ตัวดำเนินการ + สามารถรับข้อมูลเข้าได้ 2 รายการ และให้ผลลัพธ์โดยขึ้นอยู่กับว่าอินพุตคืออะไร ในตัวอย่างด้านล่าง เราจะเห็นว่าอินพุตจำนวนเต็มให้ผลเป็นจำนวนเต็มได้อย่างไร และหากอินพุตตัวใดตัวหนึ่งเป็นจำนวนลอย ผลลัพธ์จะกลายเป็นจำนวนลอย นอกจากนี้สำหรับสตริง พวกมันจะถูกเชื่อมเข้าด้วยกัน สิ่งนี้เกิดขึ้นโดยอัตโนมัติเนื่องจากวิธีการสร้างตัวดำเนินการ + ใน python

ตัวอย่าง

a = 23
b = 11
c = 9.5
s1 = "Hello"
s2 = "There!"
print(a + b)
print(type(a + b))
print(b + c)
print(type (b + c))
print(s1 + s2)
print(type(s1 + s2))

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

ผลลัพธ์

34
20.5
HelloThere!

Polymorphism ในฟังก์ชันในตัว

นอกจากนี้เรายังสามารถเห็นได้ว่าฟังก์ชันของไพ ธ อนที่แตกต่างกันสามารถรับอินพุตประเภทต่าง ๆ แล้วประมวลผลต่างกัน เมื่อเราใส่ค่าสตริงให้กับ len() มันจะนับทุกตัวอักษรในนั้น แต่ถ้าเราห้าทูเพิลหรือพจนานุกรมเป็นอินพุต ทูเพิลจะประมวลผลต่างกัน

ตัวอย่าง

str = 'Hi There !'
tup = ('Mon','Tue','wed','Thu','Fri')
lst = ['Jan','Feb','Mar','Apr']
dict = {'1D':'Line','2D':'Triangle','3D':'Sphere'}
print(len(str))
print(len(tup))
print(len(lst))
print(len(dict))

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

ผลลัพธ์

10
5
4
3

Polymorphism ในวิธีที่ผู้ใช้กำหนด

เราสามารถสร้างเมธอดที่มีชื่อเดียวกันแต่ใช้ชื่อคลาสต่างกัน ดังนั้นเราจึงสามารถเรียกใช้เมธอดเดียวกันโดยใช้ชื่อคลาสที่ต่างกันซึ่งกำหนดไว้ล่วงหน้าเพื่อให้ได้ผลลัพธ์ที่แตกต่างกัน ในตัวอย่างด้านล่าง เรามีสองคลาส สี่เหลี่ยม และ วงกลม เพื่อให้ได้ปริมณฑลและพื้นที่โดยใช้วิธีเดียวกัน

ตัวอย่าง

from math import pi

class Rectangle:
   def __init__(self, length, breadth):
      self.l = length
      self.b = breadth
   def perimeter(self):
      return 2*(self.l + self.b)
   def area(self):
      return self.l * self.b

class Circle:
   def __init__(self, radius):
      self.r = radius
   def perimeter(self):
      return 2 * pi * self.r
   def area(self):
      return pi * self.r ** 2

# Initialize the classes
rec = Rectangle(5,3)
cr = Circle(4)
print("Perimter of rectangel: ",rec.perimeter())
print("Area of rectangel: ",rec.area())

print("Perimter of Circle: ",cr.perimeter())
print("Area of Circle: ",cr.area())

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

ผลลัพธ์

Perimter of rectangel: 16
Area of rectangel: 15
Perimter of Circle: 25.132741228718345
Area of Circle: 50.26548245743669