Đa hình trong Python với VÍ DỤ

⚡ Tóm tắt thông minh

Đa hình trong Python Nó cho phép một giao diện duy nhất hoạt động với các đối tượng thuộc các kiểu khác nhau, do đó cùng một phương thức hoặc toán tử sẽ hoạt động khác nhau tùy thuộc vào đối tượng. Điều này thể hiện qua việc nạp chồng toán tử, các hàm tích hợp sẵn, các phương thức do người dùng định nghĩa và tính kế thừa. Python chương trình.

  • 🔘 Định nghĩa: Đa hình có nghĩa là "nhiều hình thức", cho phép một giao diện hoạt động trên các kiểu dữ liệu hoặc lớp khác nhau.
  • ☑️ OperaTor bị quá tải: Toán tử + cộng các số nhưng cũng có thể nối chuỗi, thể hiện tính đa hình của toán tử.
  • Chức năng tích hợp sẵn: Các hàm như len() hoạt động trên cả chuỗi, danh sách và từ điển.
  • 🧪 Các phương thức do người dùng định nghĩa: Các lớp có thể chia sẻ tên phương thức như area() và perimeter() cho các hình dạng khác nhau.
  • 🛠️ Di sản: Ghi đè phương thức cho phép lớp con định nghĩa lại một phương thức của lớp cha tại thời điểm chạy chương trình.
  • 🤖 Tầm quan trọng của AI: Các thư viện học máy tái sử dụng các giao diện chung như fit() và forward() giữa các mô hình.

Đa hình trong Python

Đa hình là gì?

Đa hình có thể được định nghĩa là một tình trạng xảy ra dưới nhiều hình thức khác nhau. Đó là một khái niệm trong Python lập trình trong đó một đối tượng được xác định trong Python có thể được sử dụng theo những cách khác nhau. Nó cho phép lập trình viên định nghĩa nhiều phương thức trong một lớp dẫn xuất và có cùng tên với tên trong lớp cha. Những kịch bản như vậy hỗ trợ việc nạp chồng phương thức trong Python.

Đa hình trong Operaxoắn

Một nhà điều hành trong Python giúp thực hiện toán học và một số nhiệm vụ lập trình khác. Ví dụ, toán tử '+' giúp thực hiện phép cộng giữa hai kiểu số nguyên trong Pythonvà theo cách tương tự, toán tử tương tự giúp nối các chuỗi trong Python lập trình.

Chúng ta hãy lấy một ví dụ về + (cộng) nhà điều hành trong Python để hiển thị một ứng dụng của Đa hình trong Python như hình dưới đây:

Python Code:

p = 55
q = 77
r = 9.5
g1 = "Guru"
g2 = "99!"
print("the sum of two numbers",p + q)
print("the data type of result is",type(p + q))
print("The sum of two numbers",q + r)
print("the data type of result is", type (q + r))
print("The concatenated string is", g1 + g2)
print("The data type of two strings",type(g1 + g2))

Đầu ra:

the sum of two numbers 132
the data type of result is <class 'int'>

The sum of the two numbers 86.5
the data type of result is <class 'float'>

The concatenated string is Guru99!
The data type of two strings <class 'str'>

Ví dụ trên cũng có thể được coi là ví dụ về nạp chồng toán tử.

Đa hình trong các phương thức do người dùng định nghĩa

Một phương thức do người dùng định nghĩa trong Python Ngôn ngữ lập trình là các phương thức do người dùng tạo ra và nó được khai báo bằng từ khóa def cùng với tên hàm.

Tính đa hình trong Python ngôn ngữ lập trình đạt được thông qua việc nạp chồng và ghi đè phương thức. Python định nghĩa các phương thức với từ khóa def và có cùng tên trong cả lớp con và lớp cha.

Chúng ta hãy lấy ví dụ sau đây như được hiển thị bên dưới: –

Python Code:

from math
import pi
class square:
    def __init__(self, length):
    self.l = length
def perimeter(self):
    return 4 * (self.l)
def area(self):
    return self.l * self.l
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
sqr = square(10)
c1 = Circle(4)
print("Perimeter computed for square: ", sqr.perimeter())
print("Area computed for square: ", sqr.area())
print("Perimeter computed for Circle: ", c1.perimeter())
print("Area computed for Circle: ", c1.area())

Đầu ra:

Perimeter computed for square:  40
Area computed for square:  100
Perimeter computed for Circle:  25.132741228718345
Area computed for Circle:  50.26548245743669

Trong đoạn mã trên, có hai phương thức do người dùng định nghĩa, chu vi và diện tích, được định nghĩa trong các lớp hình tròn và hình vuông.

Như được hiển thị ở trên, cả lớp hình tròn và lớp hình vuông đều gọi cùng một tên phương thức hiển thị đặc tính Đa hình để cung cấp đầu ra được yêu cầu.

Đa hình trong hàm

Các hàm tích hợp trong Python được thiết kế và làm tương thích để thực hiện một số loại dữ liệu. TRONG Python, len() là một trong những hàm tích hợp quan trọng.

Nó hoạt động trên nhiều kiểu dữ liệu: danh sách, bộ dữ liệu, chuỗi và từ điển. Hàm len() trả về thông tin xác định phù hợp với nhiều kiểu dữ liệu này.

Hình sau đây cho thấy cách Đa hình có thể được áp dụng trong Python liên quan đến các chức năng được xây dựng sẵn: –

Đa hình trong hàm

Chương trình sau đây giúp minh họa ứng dụng của Đa hình trong Python: -

Python Code:

print ("The length of string Guru99 is ",len("Guru99"))
print("The length of list is ",len(["Guru99","Example","Reader"]))
print("The length of dictionary is ",len({"Website name":"Guru99","Type":"Education"}))

Đầu ra:

The length of string Guru99 is 6
The length of the list is 3
The length of the dictionary is 2

Đa hình trong hàm

Trong ví dụ trên, hàm len() của Python thực hiện Đa hình cho các kiểu dữ liệu chuỗi, danh sách và từ điển tương ứng.

Đa hình và kế thừa

Kế thừa ở Python có thể được định nghĩa là khái niệm lập trình trong đó một lớp con được xác định các thuộc tính kế thừa từ một lớp cơ sở khác có trong Python.

Có hai chìa khóa Python các khái niệm được gọi là ghi đè phương thức và quá tải phương thức.

  • Trong quá tải phương thức, Python cung cấp tính năng tạo các phương thức có cùng tên để thực hiện hoặc thực thi các chức năng khác nhau trong một đoạn mã nhất định. Nó cho phép nạp chồng các phương thức và sử dụng chúng để thực hiện các tác vụ khác nhau theo cách đơn giản hơn.
  • Trong ghi đè Phương thức, Python ghi đè giá trị có tên tương tự trong lớp cha và lớp con.

Chúng ta hãy lấy ví dụ sau về Đa hình và kế thừa như được hiển thị bên dưới: –

Python Code:

class baseclass:
    def __init__(self, name):
    self.name = name
def area1(self):
    pass
def __str__(self):
    return self.name
class rectangle(baseclass):
    def __init__(self, length, breadth):
    super().__init__("rectangle")
self.length = length
self.breadth = breadth
def area1(self):
    return self.length * self.breadth
class triangle(baseclass):
    def __init__(self, height, base):
    super().__init__("triangle")
self.height = height
self.base = base
def area1(self):
    return (self.base * self.height) / 2
a = rectangle(90, 80)
b = triangle(77, 64)
print("The shape is: ", b)
print("The area of shape is", b.area1())
print("The shape is:", a)
print("The area of shape is", a.area1())

Đầu ra:

The shape is: a triangle
The area of a shape is 2464.0

The shape is: a rectangle
The area of a shape is 7200

Trong đoạn mã trên, các phương thức có cùng tên được định nghĩa là phương thức init và phương thức Area1. Sau đó, đối tượng của lớp hình vuông và hình chữ nhật được sử dụng để gọi hai phương thức nhằm thực hiện các tác vụ khác nhau và cung cấp đầu ra về diện tích hình vuông và hình chữ nhật.

Đa hình với các phương thức lớp

Python lập trình cho phép các lập trình viên đạt được Đa hình và nạp chồng phương thức bằng các phương thức lớp. Các lớp khác nhau trong Python có thể có các phương thức được khai báo cùng tên trên toàn bộ Python Mã.

In Python, hai lớp khác nhau có thể được định nghĩa. Một là lớp con và nó lấy các thuộc tính từ một lớp được xác định khác gọi là lớp cha.

Ví dụ sau minh họa khái niệm Đa hình với các phương thức lớp: –

Python Code:

class amazon:
    def __init__(self, name, price):
    self.name = name
self.price = price
def info(self):
    print("This is product and am class is invoked. The name is {self.name}. This costs {self.price} rupees.")
class flipkart:
    def __init__(self, name, price):
    self.name = name
self.price = price
def info(self):
    print(f "This is product and fli class is invoked. The name is {self.name}. This costs {self.price} rupees.")
FLP = flipkart("Iphone", 2.5)
AMZ = amazon("Iphone", 4)
for product1 in (FLP, AMZ):
    product1.info()

Đầu ra:

This is a product, and fli class is invoked. The name is iPhone, and this costs 2.5 rupees.
This is a product, and am class is invoked. The name is iPhone, and this costs 4 rupees.

Trong đoạn mã trên, hai lớp khác nhau có tên là flipkart và amazon sử dụng cùng tên phương thức info và init để cung cấp báo giá tương ứng của sản phẩm và minh họa thêm khái niệm Đa hình trong Python.

Sự khác biệt giữa nạp chồng phương thức và đa hình thời gian biên dịch

Trong Đa hình thời gian biên dịch, trình biên dịch của Python chương trình giải quyết cuộc gọi. Đa hình thời gian biên dịch được thực hiện thông qua việc nạp chồng phương thức.

Python trình biên dịch không giải quyết các lệnh gọi trong thời gian chạy cho tính đa hình. Nó cũng được phân loại là ghi đè phương thức trong đó các phương thức giống nhau mang chữ ký hoặc thuộc tính tương tự, nhưng chúng tạo thành một phần của các lớp khác nhau.

Câu Hỏi Thường Gặp

Vịt typing hãy Python Đánh giá một đối tượng dựa trên các phương thức mà nó cung cấp chứ không phải dựa trên kiểu lớp của nó. Nếu một đối tượng có phương thức cần thiết, nó sẽ hoạt động, theo nguyên tắc "nếu nó trông giống con vịt và kêu như con vịt, thì nó là con vịt".

Theo truyền thống thì không. Khi hai phương pháp cùng tên, định nghĩa cuối cùng sẽ được ưu tiên. Python Thay vào đó, nó mô phỏng việc quá tải bằng cách sử dụng các đối số mặc định, các đối số có độ dài thay đổi, hoặc trình trang trí functools.singledispatch để xử lý các loại đối số khác nhau trong cùng một hàm.

AbstracCác lớp cơ sở, từ mô-đun abc, khai báo các phương thức mà mọi lớp con phải triển khai. Chúng thực thi một giao diện chung, do đó các lớp con không liên quan có thể được sử dụng đa hình trong khi Python Đảm bảo mỗi phương pháp đều đáp ứng được các yêu cầu cần thiết.

Đa hình giúp cải thiện khả năng tái sử dụng, tính linh hoạt và khả năng mở rộng của mã. Một hàm hoặc giao diện có thể xử lý nhiều loại đối tượng, giúp giảm sự trùng lặp, đơn giản hóa việc bảo trì và cho phép bạn thêm các lớp mới mà không cần viết lại mã đã sử dụng chúng.

Vâng. Thông qua Duck TypingCác lớp không liên quan nhưng cùng thực hiện một phương thức có thể được sử dụng thay thế cho nhau mà không cần có lớp cha chung. OperaViệc nạp chồng hàm và các hàm tích hợp sẵn như len() cũng cung cấp tính đa hình mà không cần kế thừa.

Tính đa hình xuất hiện khi một hàm xử lý chuỗi, danh sách hoặc các đối tượng tùy chỉnh, trong các trình điều khiển cơ sở dữ liệu cung cấp một API duy nhất trên nhiều công cụ, và trong các bộ công cụ giao diện người dùng đồ họa (GUI) nơi nhiều tiện ích chia sẻ các phương thức draw() hoặc update() được gọi thông qua một giao diện duy nhất.

Các framework AI phụ thuộc vào tính đa hình. Trong PythonTorTrong scikit-learn, mọi mô hình đều kế thừa từ nn.Module và ghi đè phương thức forward(); các thuật toán ước lượng chia sẻ các phương thức fit() và predict(), do đó các thuật toán khác nhau chạy thông qua một giao diện nhất quán và có thể hoán đổi cho nhau.

Đúng vậy. GitHub Copilot và các trợ lý AI tác nhân tạo ra các hàm kiểu vịt, đề xuất abstraccác lớp cơ sở t, và tái cấu trúc các phương thức lặp lại thành các thiết kế đa hình từ một lời nhắc ngắn gọn. RevHãy xem kết quả đầu ra để xác nhận logic và giao diện hoạt động chính xác.

Tóm tắt bài viết này với: