Giả sử có một lớp gọi là động vật, nhưng trong lớp đó, có rất nhiều dạng như chó, mèo và bò. Đó là, một lớp động vật chung bao gồm nhiều dạng có hình dạng và kích cỡ khác nhau và thực hiện nhiều chức năng khác nhau. Toàn bộ hiện tượng này được định nghĩa bởi một thuật ngữ duy nhất. tính đa hình. Đa hình là một thuật ngữ được sử dụng trong Python để chỉ khả năng của một đối tượng có nhiều dạng. Thuật ngữ này có nguồn gốc từ hai thuật ngữ riêng biệt. poly, có nghĩa là nhiều, và morphs, có nghĩa là hình thức Show
Một lớp là một khuôn mẫu để tạo một đối tượng. Trong ví dụ sau, chúng ta tạo một lớp có tên-A và khai báo một biến x, sau đó biến này được truyền một giá trị. Đối tượng x được tạo và giá trị của x được in Một ví dụ đơn giản thể hiện khái niệm lớp và đối tượng trong Python. - Người xây dựngHàm tạo là một loại chương trình con trong lập trình hướng đối tượng. Khi một đối tượng được tạo trong một lớp, hàm tạo hàm được sử dụng để gán giá trị cho các thành viên dữ liệu. Hầu như mỗi khi chúng ta tạo một đối tượng trong Python, chúng ta đều sử dụng hàm __init__(). Chúng tôi sử dụng hàm __init__() ở hầu hết mọi nơi trong đa hình Tính đa hình trong Python là gì?Đa hình là một thuật ngữ được sử dụng trong Python để chỉ một tên hàm chung có thể được sử dụng cho một số loại. Khái niệm này thường được sử dụng trong lập trình hướng đối tượng của Python. Như trường hợp của các ngôn ngữ lập trình khác như Java và C++, tính đa hình được triển khai trong Python cho nhiều mục đích khác nhau, đáng chú ý nhất là Duck Typing, Toán tử và Phương thức nạp chồng và Ghi đè phương thức. Tính đa hình này có thể được thực hiện theo hai cách riêng biệt. quá tải và ghi đè Một minh chứng đơn giản về tính đa hình trong Python. - >>>4+5 9 >>>"4"+"5" 45 >>>"ab"+"cd" abcd Chúng ta có thể thấy từ ví dụ trên rằng toán tử cộng được sử dụng theo nhiều cách khác nhau. Trong ví dụ đầu tiên, do dữ liệu đã cho là hai giá trị nguyên nên toán tử đã thực hiện phép cộng hai số Và trong ví dụ thứ hai, các giá trị giống hệt nhau được cung cấp dưới dạng dữ liệu chuỗi và cùng một toán tử nối hai chuỗi (nối là hành động nối hai chuỗi từ đầu đến cuối). Trong ví dụ thứ ba, dữ liệu là hai chuỗi, nhưng toán tử giống hệt với chuỗi trước đó và nó nối hai chuỗi Mặc dù giá trị đầu tiên là một số nguyên, toán tử cộng nối hai văn bản trong trường hợp này Do đó, đây là một số trường hợp cơ bản nhất của tính đa hình trong Python Làm thế nào để sử dụng đa hình?quá tảiQuá tải có thể được phân thành hai loại
Quá tải toán tửNạp chồng toán tử là một loại nạp chồng trong đó một toán tử có thể được sử dụng theo những cách khác với những người được nêu trong định nghĩa được xác định trước của nó >>>print(2*7) 14 >>>print("a"*3) aaa Như vậy, trong ví dụ đầu tiên, toán tử nhân hai số; phép nhân của một chuỗi và một số nguyên là không khả thi, ký tự được hiển thị ba lần hai lần Do đó, nó cho thấy cách một toán tử có thể được sử dụng theo nhiều cách khác nhau Quá tải toán tử trong thực tế
Traceback (most recent call last): File “G:рythоn рyсhаrm рrоjeсtmаin.рy”, line 7, in total_fare=bus+ car TypeError: unsupported operand type(s) for +: ‘Vehicle’ and ‘Vehicle’ Trong ví dụ trên, đã xảy ra lỗi do Python không thể kết hợp hai đối tượng. Trong trường hợp này, mặt hàng là một chiếc xe Bây giờ là lúc sử dụng quá tải toán tử Bây giờ chúng ta sẽ quá tải phương thức cụ thể __add__ toán tử class Vehicle: def __init__(self, fare): self.fare = fare def __add__(self, other)://using the special function __add__ operator return self.fare+ other.fare bus= Vehicle(20) car= Vehicle(30) total_fare=bus+ car print(total_fare) 50 Bằng cách nạp chồng hàm đặc biệt, chúng ta khai báo rằng bất cứ khi nào chúng ta sử dụng toán tử cộng trong đối tượng total_fare=xe buýt+xe hơi, giá vé của họ sẽ được thêm vào ví dụ 2. Trong ví dụ này, chúng ta hãy so sánh giá vé của một số phương thức vận tải
True Trong ví dụ trên, toán tử quan hệ __lt__ được sử dụng như một chức năng đặc biệt để cho phép toán tử Quá tải phương thứcQuá tải một phương thức đề cập đến một lớp có nhiều phương thức có cùng tên nhưng có thể khác biệt thông số. Mặc dù Python vốn không kích hoạt quá tải phương thức, nhưng có rất nhiều kỹ thuật để làm điều này. Mặc dù có thể nạp chồng phương thức, nhưng chỉ những phương thức được chỉ định gần đây nhất Hãy cố gắng hiểu với sự giúp đỡ của một ví dụ Giả sử một lớp A, trong lớp chúng ta đã thực hiện một hàm show có một hàm tạo self và đối số với giá trị mặc định Không có và Không có. Sau đó, tôi đã tạo một đối tượng và thực hiện chức năng với đối tượng obj. hiển thị, nhưng tôi không cung cấp bất kỳ đối số nào, mặc dù thực tế là nó sẽ hiển thị Không có và Không có vì chúng tôi đặt giá trị mặc định trong vùng chức năng class A: def show(self, a=None, b=None): print(a,b) obj=A() obj.show() None None Để cung cấp một giá trị khác, bây giờ tôi phải sử dụng một phương thức khác obj. show() với một đối số >>>print(2*7) 14 >>>print("a"*3) aaa0 >>>print(2*7) 14 >>>print("a"*3) aaa1 Giá trị Không được cung cấp cho một trong phần chức năng được thay thế bằng 4 trong đầu ra. Phần 4 được đưa ra làm đối số cho lời gọi hàm Bây giờ, hãy xem điều gì sẽ xảy ra nếu chúng ta gửi hai đối số đến lệnh gọi hàm trong ví dụ sau >>>print(2*7) 14 >>>print("a"*3) aaa2____13 Do thực tế là chúng tôi đã gửi hai tham số 4 và 5 trong khi gọi hàm, hai giá trị riêng biệt cho một Vì vậy, trong ví dụ trước, chúng ta đã thấy cách chúng ta có thể sử dụng cùng một phương thức và gọi các hàm riêng biệt Hãy xem xét một ví dụ khác trong đó chúng ta đã sử dụng các câu lệnh điều kiện để gọi một số hàm trong >>>print(2*7) 14 >>>print("a"*3) aaa4 >>>print(2*7) 14 >>>print("a"*3) aaa5 Nếu không có đối số nào được cung cấp trong khi gọi hàm, thì không có giá trị nào được gán; Di sảnTrước khi chúng ta tìm hiểu về ghi đè phương thức, cần phải hiểu tính kế thừa ban đầu của Python. Kế thừa là phương thức mà một lớp có thể được dẫn xuất từ bất kỳ lớp cơ sở nào, với lớp dẫn xuất kế thừa tất cả các thuộc tính của lớp cơ sở. Tính kế thừa làm giảm bớt thách thức của việc viết lặp đi lặp lại cùng một mã và tăng cường khả năng sử dụng lại >>>print(2*7) 14 >>>print("a"*3) aaa6 >>>print(2*7) 14 >>>print("a"*3) aaa7 Ghi đè phương thứcGhi đè phương thức là quá trình thay đổi một lớp cơ sở bằng cách sử dụng các phương thức và tham số của lớp dẫn xuất Hãy xem xét một ví dụ để chứng minh nó hoạt động như thế nào. Để bắt đầu, chúng ta sẽ thiết kế một lớp cơ sở chứa một phương thức và sau đó là một lớp dẫn xuất không chứa các phương thức >>>print(2*7) 14 >>>print("a"*3) aaa8 Kết quả là khi hàm được gọi, đầu ra sẽ hiển thị phương thức của lớp cơ sở, vì lớp dẫn xuất thiếu phương thức >>>print(2*7) 14 >>>print("a"*3) aaa9 Bây giờ, trong ví dụ sau, chúng ta định nghĩa một phương thức khác có cùng tên với lớp cơ sở nhưng với một tham số khác trong lớp dẫn xuất. Do phương thức của lớp cơ sở đã bị lớp dẫn xuất ghi đè nên đầu ra sẽ chỉ bao gồm phương thức của lớp dẫn xuất 0 1 Do phương thức của lớp cơ sở đã bị ghi đè nên phương thức của lớp cơ sở không thể được gọi bình thường. Như vậy, để gọi phương thức của lớp cơ sở, chúng ta phải sử dụng hàm super trong phương thức được ghi đè của lớp dẫn xuất 2 3 gõ vịtGõ vịt là một khái niệm đa hình. Thuật ngữ gõ vịt có nguồn gốc từ một câu tục ngữ nói rằng mọi thứ đi như vịt kêu quạc quạc như vịt và bơi như vịt đều được gọi là vịt bất kể mặt hàng nào. Về cơ bản, nó chỉ ra rằng nếu bất cứ điều gì phù hợp với hành vi của nó với hành vi khác, thì nó Khi thảo luận về lập trình hướng đối tượng trong Python, từ đa hình không thể tránh khỏi được sử dụng Trong lập trình hướng đối tượng, các đối tượng phải có nhiều hình dạng khác nhau. Đặc tính này rất quan trọng trong phát triển phần mềm. Cùng một hành động có thể được thực hiện theo nhiều cách khác nhau do tính đa hình Khái niệm này thường được sử dụng trong khi thảo luận về khớp nối lỏng lẻo, nội xạ phụ thuộc và giao diện, giữa các Phần kết luậnDo đó, đa hình đơn giản hóa và cải thiện khả năng đọc mã. Nó cũng làm giảm độ khó đọc và tiết kiệm nhiều dòng mã. Đa hình là một khái niệm rất hữu ích trong lập trình hướng đối tượng cũng có thể được sử dụng trong các trường hợp thực tế. Rốt cuộc, Thế giới thực và Đa hình là những người bạn tuyệt vời Phương tiện hiển thị trong bài viết này không thuộc sở hữu của Analytics Vidhya và được sử dụng theo quyết định của Tác giả Tính đa hình có khả thi trong Python không?Giống như trường hợp của các ngôn ngữ lập trình khác như Java và C++, tính đa hình được triển khai trong Python cho nhiều mục đích khác nhau, đáng chú ý nhất là . Tính đa hình này có thể được thực hiện theo hai cách riêng biệt. quá tải và ghi đè.
Ví dụ về tính đa hình trong Python là gì?Ví dụ 1. Đa hình trong toán tử bổ sung
. Do đó, chương trình trên xuất ra 3. Tương tự, đối với kiểu dữ liệu chuỗi, toán tử + được sử dụng để thực hiện phép nối. Kết quả là chương trình trên xuất ra Lập trình Python. For integer data types, + operator is used to perform arithmetic addition operation. Hence, the above program outputs 3 . Similarly, for string data types, + operator is used to perform concatenation. As a result, the above program outputs Python Programming .
Python có hỗ trợ các phương thức đa hình không?Có, Python hỗ trợ tính đa hình . Từ đa hình có nghĩa là có nhiều dạng. Đa hình là một tính năng quan trọng của định nghĩa lớp trong Python được sử dụng khi bạn có các phương thức được đặt tên thông thường trên các lớp hoặc lớp con.
Một ví dụ tốt về đa hình là gì?Một ví dụ thực tế về tính đa hình là một người đồng thời có thể có các đặc điểm khác nhau . Một người đàn ông đồng thời là một người cha, một người chồng và một nhân viên. Vì vậy, cùng một người thể hiện hành vi khác nhau trong các tình huống khác nhau. Điều này được gọi là đa hình. |