Computer >> Máy Tính >  >> Lập trình >> Python

Đa hình trong Python

Đa hình có nghĩa là nhiều hình thức. Trong python, chúng ta có thể tìm thấy cùng một toán tử hoặc hàm có nhiều dạng. Nó cũng hữu ích trong việc tạo các lớp khác nhau sẽ có các phương thức của lớp có cùng tên. Điều đó giúp tái sử dụng nhiều mã và giảm độ phức tạp của mã. Tính đa hình cũng được liên kết với tính kế thừa như chúng ta sẽ thấy trong một số ví dụ dưới đây.

Tính đa hình trong toán tử

Toán tử + có thể lấy hai đầu vào và cho chúng ta kết quả tùy thuộc vào đầu vào là gì. Trong các ví dụ dưới đây, chúng ta có thể thấy cách các đầu vào số nguyên mang lại một số nguyên và nếu một trong các đầu vào là float thì kết quả sẽ trở thành float. Ngoài ra đối với các chuỗi, chúng chỉ đơn giản được nối. Điều này xảy ra tự động do cách toán tử + được tạo trong python.

Ví dụ

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))

Chạy đoạn mã trên cho chúng ta kết quả sau -

Đầu ra

34
20.5
HelloThere!

Tính đa hình trong các hàm tích hợp

Chúng ta cũng có thể thấy rằng các hàm python khác nhau có thể nhận các đầu vào thuộc các loại khác nhau và sau đó xử lý chúng theo cách khác nhau. Khi chúng ta cung cấp một giá trị chuỗi cho len (), nó sẽ đếm mọi ký tự trong đó. Nhưng nếu chúng ta năm bộ hoặc một từ điển làm đầu vào, thì nó sẽ xử lý chúng theo cách khác.

Ví dụ

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))

Chạy đoạn mã trên cho chúng ta kết quả sau -

Đầu ra

10
5
4
3

Tính đa hình trong các phương thức do người dùng xác định

Chúng ta có thể tạo các phương thức có cùng tên nhưng được đặt dưới các tên lớp khác nhau. Vì vậy, chúng ta có thể tiếp tục gọi cùng một phương thức với tên lớp khác nhau đã được cố định trước để nhận được kết quả khác nhau. Trong ví dụ dưới đây, chúng ta có hai lớp, hình chữ nhật và hình tròn để lấy chu vi và diện tích của chúng bằng các phương pháp tương tự.

Ví dụ

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())

Chạy đoạn mã trên cho chúng ta kết quả sau -

Đầu ra

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