Hướng dẫn dùng polymorphism python python
Nhóm phát triển của chúng tôi vừa ra mắt website langlearning.net học tiếng Anh, Nga, Đức, Pháp, Việt, Trung, Hàn, Nhật, ... miễn phí cho tất cả mọi người. Là một website được viết trên công nghệ web Flutter vì vậy hỗ trợ rất tốt cho người học, kể cả những người học khó tính nhất. Hiện tại website đang tiếp tục được cập nhập nội dung cho phong phú và đầy đủ hơn. Mong các bạn nghé thăm và ủng hộ website mới của chúng tôi. Show 1- Giới thiệuThừa kế và đa hình - đây là một khái niệm vô cùng quan trọng trong Python. Mà bạn bắt buộc phải hiểu nó.
Tài liệu này được viết dựa trên:
2- Thừa kế trong PythonPython cho phép bạn tạo một lớp mở rộng từ một hoặc nhiều lớp khác. Lớp này được gọi là lớp dẫn xuất (Derived class), hoặc đơn giản gọi là lớp con. Lớp con sẽ thừa kế các thuộc tính (attribute), phương thức và các thành viên khác từ lớp cha. Nó cũng có thể ghi đè (override) các phương thức từ class cha. Nếu lớp con không tự định nghĩa 1 constructor của nó, mặc định nó sẽ thừa kế constructor của lớp cha.
Chúng ta cần một vài class tham gia vào minh họa.
Trong Python, phương thức khởi tạo (constructor) sử dụng để tạo một đối tượng, và gán giá trị cho các thuộc tính (attribute). Hãy xem ví dụ: animal.py
Cat là lớp con thừa kế từ lớp Animal, nó cũng có các thuộc tính (attribute) của nó. cat.py
catTest.py
Kết quả chạy module catTest:
Điều gì đã xẩy ra khi bạn khởi tạo một đối tượng từ phương thức khởi tạo (constructor)?. Nó sẽ gọi lên phương thức khởi tạo của lớp cha như thế nào? Bạn hãy xem hình minh họa dưới đây: Với hình minh họa trên bạn thấy rằng, phương thức khởi tạo (constructor) của lớp cha được gọi trong phương thức khởi tạo của lớp con, nó sẽ gán giá trị cho các thuộc tính (attribute) của lớp cha, sau đó các thuộc tính của lớp con cũng được gán giá trị. 3- Ghi đè phương thứcMặc định lớp con được thừa kế các phương thức từ lớp cha, tuy nhiên lớp con có thể ghi đè (override) phương thức của lớp cha. mouse.py
Test mouseTest.py
Output:
4- Phương thức trừu tượngKhái niệm về một phương thức trừu tượng (abstract method) hoặc một lớp trừu tượng.(abstract class) có trong các ngôn ngữ như Java, C#. Nhưng nó không có một cách rõ ràng trong Python. Tuy nhiên chúng ta có cách để định nghĩa nó. Một lớp được gọi là trừu tượng (abstract) định nghĩa ra các phương thức trừu tượng và lớp con phải ghi đè (override) các phương thức này nếu muốn sử dụng chúng. Các phương thức trừu tượng luôn ném ra ngoại lệ NotImplementedError. abstractExample.py
Output:
Ví dụ ở trên thể hiện tính đa hình (Polymorphism) trong Python. Một đối tượng Document (tài liệu) có thể được thể hiện ở các hình thái khác nhau (PDF, Word, Excel, ...). Một ví dụ khác minh họa về tính đa hình: Khi tôi nói về một người Châu Á, nó khá trừu tượng, anh ta có thể là một người Nhật Bản, người Việt Nam, hoặc một người Ấn Độ, ... Tuy nhiên đều có đặc điểm đặc trưng của người Châu Á. 5- Đa thừa kếPython cho phép đa thừa kế, điều đó có nghĩa là bạn có thể tạo ra một lớp mở rộng (extends) từ 2 hoặc nhiều lớp khác. Các lớp cha có thể có các thuộc tính (attribute) giống nhau, hoặc các phương thức giống nhau,.... Lớp con sẽ ưu tiên thừa kế thuộc tính, phương thức, ... của lớp đứng đầu tiên trong danh sách thừa kế. multipleInheritanceExample.py
Output:
Phương thức mro() Phương thức mro() giúp bạn xem danh các lớp cha của một lớp nào đó. Hãy xem một ví dụ dưới đây: mroExample.py
6- Hàm issubclass và isinstancePython có 2 hàm hữu ích:
isinstance Hàm isinstance giúp bạn kiểm tra xem một "cái gì đó" có phải là một đối tượng của một lớp nào đó hay không. issubclass Hàm issubclass kiểm tra xem lớp này có phải là con của một lớp khác hay không. isinstancesubclass.py
Output:
7- Đa hình với hàmỞ đây tôi tạo ra 2 lớp English và French. Cả hai lớp này đều có phương thức greeting(). Cả hai tạo ra các lời chào khác nhau. Tạo ra 2 đối tượng tương ứng từ 2 lớp trên và gọi hành động của 2 đối tượng này trong cùng một hàm (Hàm intro) people.py
Chạy ví dụ: |