Hướng dẫn abstract class in python - lớp trừu tượng trong python
Show
Đã đăng vào thg 6 18, 2019 4:28 CH 5 phút đọc 5 phút đọc Hello everyone! Sau bao khó khăn thì chúng ta lại được gặp nhau mọi người nhỉ. Và như thường lệ, mình sẽ giới thiệu với mọi người về nội dung của bài viết ngày hôm nay. Ở bài viết trước mình đã trình bày với mọi người về Class và Object trong Python. Và hôm nay, để tiếp tục thì mình sẽ đưa mọi người đến với một loại class rất quan trọng đó là Abstract class (lớp trừu tượng). Are you ready? Here we go! Abstract class là gì?Một Abstract class có thể được coi là một bản thiết kế cho các class khác, cho phép bạn tạo một tập hợp các phương thức mà phải được tạo trong bất kỳ class con nào được xây dựng từ Abstract class của bạn. Một class có chứa một hoặc các phương thức abstract được gọi là một Abstract class. Một phương thức abstract là một phương thức có khai báo nhưng không có bất kỳ triển khai nào. Các Abstract class không thể khởi tạo và nó cần các class con để triển khai cho các phương thức abstract được định nghĩa trong các Abstract class.Abstract class có thể được coi là một bản thiết kế cho các class khác, cho phép bạn tạo một tập hợp các phương thức mà phải được tạo trong bất kỳ class con nào được xây dựng từ Abstract class của bạn. Một class có chứa một hoặc các phương thức abstract được gọi là một Abstract class. Một phương thức abstract là một phương thức có khai báo nhưng không
có bất kỳ triển khai nào. Các Abstract class không thể khởi tạo và nó cần các class con để triển khai cho các phương thức abstract được định nghĩa trong các Abstract class. Tại sạo phải sử dụng Abstract class?Các Abstract class cho phép bạn cung cấp chức năng mặc định cho các class con. Bằng cách định nghĩa một abstract base class (lớp cơ sở trừu tượng), bạn có thể xây dựng nên một mô hình chung cho một nhóm các class con. Khả năng này đặc biệt hữu ích cho bạn khi làm việc trong một team lớn hoặc với dự án lớn, nơi mà bạn rất khó khăn hoặc không thể nào đưa mọi thứ vào trong một hoặc một nhóm các class nào đó. Lúc đó bạn cần có một mẫu class chung chứa các thứ cần thiết, sau đó thì chỉ cần implement nó vào để giải quyết thôi. Abstract Base classes (ABC)Mặc định trong Python sẽ không cung cấp Abstract class cho chúng ta sử dụng. Nhưng Python có một mô-đun gọi là Abstract Base Classes (ABC) để giúp chúng ta làm điều đó. Mô-đun này nằm trong package abc nên chúng ta cần import vào trước khi sử dụng.
Từ khóa form abc import ABC, abstractmethod # câu này bắt buộc phải có nhé class abstractClassName(ABC): [danh sách thuộc tính] [danh sách phương thức] @abstractmethod def methodName(self): pass # tạo class thứ 2 implement từ abstractClassName class normalClass(abstractClassName): # khai báo cho class ở đây 79Vì Abstract class là một class, nên các bạn có thể hoàn toàn khai báo thuộc tính và phương thức như một class bình thường. Và để khai báo được phương thức abstract thì các bạn cần import thêm mô-đun abstractmethod cùng với từ khóa 79. Mô-đun này cũng nằm trong package abc nên các bạn có thể import như sau:abstractmethod cùng với từ khóa 79. Mô-đun này cũng nằm trong package abc nên các bạn có thể import như sau:
Cú pháp khai báo Abstract class
Trên đây là cú pháp khai báo một abstract class cơ bản. Ở đây mình dùng từ khóa 79 để khai báo rằng phương thức phía dưới là phương thức abstract. Cụ thể cách dùng các bạn có thể tham khảo ví dụ dưới đây.Ví dụ minh họaKết luậnNhư vậy là mình đã giới thiệu xong với các bạn một trong những class very very important trong Python rồi nhé. Qua đó mình xin tổng kết lại một số thứ như sau:
Cảm ơn các bạn đã cố gắng xem hết bài viết, chúc các bạn thành công. All rights reserved Một lớp trừu tượng có thể được coi là một kế hoạch chi tiết cho các lớp khác. Nó cho phép bạn tạo một tập hợp các phương thức phải được tạo trong bất kỳ lớp con nào được xây dựng từ lớp trừu tượng. Một lớp chứa một hoặc nhiều phương thức trừu tượng được gọi là một lớp trừu tượng. Một phương pháp trừu tượng là một phương pháp có khai báo nhưng không có việc thực hiện. Trong khi chúng tôi đang thiết kế các đơn vị chức năng lớn, chúng tôi sử dụng một lớp trừu tượng. Khi chúng tôi muốn cung cấp một giao diện chung cho các triển khai khác nhau của một thành phần, chúng tôi sử dụng một lớp trừu tượng. (API) cho một tập hợp các lớp con. Khả năng này đặc biệt hữu ích trong các tình huống mà bên thứ ba sẽ cung cấp các triển khai, chẳng hạn như với các plugin, nhưng cũng có thể giúp bạn khi làm việc trong một nhóm lớn hoặc với một cơ sở mã lớn trong đó giữ cho tất cả các lớp trong tâm trí của bạn là khó khăn hoặc không thể. Python đi kèm với một mô -đun cung cấp cơ sở để xác định các lớp cơ sở trừu tượng (ABC) và tên mô -đun đó là ABC. ABC hoạt động bằng cách trang trí các phương pháp của lớp cơ sở là trừu tượng và sau đó đăng ký các lớp bê tông dưới dạng triển khai cơ sở trừu tượng. Một phương pháp trở nên trừu tượng khi được trang trí bằng từ khóa @abstractmethod. Ví dụ - & nbsp; Why use Abstract Base Classes : By defining an abstract base class, you can define a common Application Program Interface(API) for a set of subclasses. This capability is especially useful in situations where a third-party is going to provide implementations, such as with plugins, but can also help you when working in a large team or with a large code-base where keeping all classes in your mind is difficult or not possible.Why use Abstract Base Classes : How Abstract Base classes work : By default, Python does not provide abstract classes. Python comes with a module that provides the base for defining Abstract Base classes(ABC) and that module name is ABC. ABC works by decorating methods of the base class as abstract and then registering concrete classes as implementations of the abstract base. A method becomes abstract when decorated with the keyword @abstractmethod. For Example –How Abstract Base classes work : Nội dung chính
Các phương thức trừu tượng chỉ xác định một hợp đồng mà các lớp dẫn xuất phải thực hiện.Đó là cách bạn đảm bảo rằng họ thực sự luôn luôn như vậy.define a contract that derived classes must implement. It's is the way how you ensure that they actually always will. Python3Một lớp trừu tượng có thể được coi là một kế hoạch chi tiết cho các lớp khác. Nó cho phép bạn tạo một tập hợp các phương thức phải được tạo trong bất kỳ lớp con nào được xây dựng từ lớp trừu tượng. Một lớp chứa một hoặc nhiều phương thức trừu tượng được gọi là một lớp trừu tượng. Một phương pháp trừu tượng là một phương pháp có khai báo nhưng không có việc thực hiện. Trong khi chúng tôi đang thiết kế các đơn vị chức năng lớn, chúng tôi sử dụng một lớp trừu tượng. Khi chúng tôi muốn cung cấp một giao diện chung cho các triển khai khác nhau của một thành phần, chúng tôi sử dụng một lớp trừu tượng. (API) cho một tập hợp các lớp con. Khả năng này đặc biệt hữu ích trong các tình huống mà bên thứ ba sẽ cung cấp các triển khai, chẳng hạn như với các plugin, nhưng cũng có thể giúp bạn khi làm việc trong một nhóm lớn hoặc với một cơ sở mã lớn trong đó giữ cho tất cả các lớp trong tâm trí của bạn là khó khăn hoặc không thể. Python đi kèm với một mô -đun cung cấp cơ sở để xác định các lớp cơ sở trừu tượng (ABC) và tên mô -đun đó là ABC. ABC hoạt động bằng cách trang trí các phương pháp của lớp cơ sở là trừu tượng và sau đó đăng ký các lớp bê tông dưới dạng triển khai cơ sở trừu tượng. Một phương pháp trở nên trừu tượng khi được trang trí bằng từ khóa @abstractmethod. Ví dụ - & nbsp; Why use Abstract Base Classes : By defining an abstract base class, you can define a common Application Program Interface(API) for a set of subclasses. This capability is especially useful in situations where a third-party is going to provide implementations, such as with plugins, but can also help you when working in a large team or with a large code-base where keeping all classes in your mind is difficult or not possible. 862 How Abstract Base classes work : By default, Python does not provide abstract classes. Python comes with a module that provides the base for defining Abstract Base classes(ABC) and that module name is ABC. ABC works by decorating methods of the base class as abstract and then registering concrete classes as implementations of the abstract base. A method becomes abstract when decorated with the keyword @abstractmethod. For Example – 866Nội dung chính 862Tại sao phương pháp trừu tượng được sử dụng trong Python?Việc sử dụng phương pháp trừu tượng là gì? Mã 1:0 I can walk and run I can crawl I can bark I can roar88 I can walk and run I can crawl I can bark I can roar4 85 86 87 88Code 2: Python3Một lớp trừu tượng có thể được coi là một kế hoạch chi tiết cho các lớp khác. Nó cho phép bạn tạo một tập hợp các phương thức phải được tạo trong bất kỳ lớp con nào được xây dựng từ lớp trừu tượng. Một lớp chứa một hoặc nhiều phương thức trừu tượng được gọi là một lớp trừu tượng. Một phương pháp trừu tượng là một phương pháp có khai báo nhưng không có việc thực hiện. Trong khi chúng tôi đang thiết kế các đơn vị chức năng lớn, chúng tôi sử dụng một lớp trừu tượng. Khi chúng tôi muốn cung cấp một giao diện chung cho các triển khai khác nhau của một thành phần, chúng tôi sử dụng một lớp trừu tượng. (API) cho một tập hợp các lớp con. Khả năng này đặc biệt hữu ích trong các tình huống mà bên thứ ba sẽ cung cấp các triển khai, chẳng hạn như với các plugin, nhưng cũng có thể giúp bạn khi làm việc trong một nhóm lớn hoặc với một cơ sở mã lớn trong đó giữ cho tất cả các lớp trong tâm trí của bạn là khó khăn hoặc không thể. Python đi kèm với một mô -đun cung cấp cơ sở để xác định các lớp cơ sở trừu tượng (ABC) và tên mô -đun đó là ABC. ABC hoạt động bằng cách trang trí các phương pháp của lớp cơ sở là trừu tượng và sau đó đăng ký các lớp bê tông dưới dạng triển khai cơ sở trừu tượng. Một phương pháp trở nên trừu tượng khi được trang trí bằng từ khóa @abstractmethod. Ví dụ - & nbsp; Why use Abstract Base Classes : By defining an abstract base class, you can define a common Application Program Interface(API) for a set of subclasses. This capability is especially useful in situations where a third-party is going to provide implementations, such as with plugins, but can also help you when working in a large team or with a large code-base where keeping all classes in your mind is difficult or not possible.Output: I can walk and run I can crawl I can bark I can roar I can walk and run I can crawl I can bark I can roar0 I can walk and run I can crawl I can bark I can roar8888Implementation Thông qua lớp con: & nbsp; Bằng cách phân lớp trực tiếp từ cơ sở, chúng ta có thể tránh được sự cần thiết phải đăng ký lớp học một cách rõ ràng. Trong trường hợp này, Quản lý lớp Python được sử dụng để nhận ra pluginimplementation là triển khai pluginbase trừu tượng. & NBSP; & NBSP; Implementation Through Subclassing : By subclassing directly from the base, we can avoid the need to register the class explicitly. In this case, the Python class management is used to recognize PluginImplementation as implementing the abstract PluginBase. Python3 859 860 861 863 860 865 859 860 869I can walk and run I can crawl I can bark I can roar9 30 863 860 873 859 860 869I can walk and run I can crawl I can bark I can roar9 39 30I can walk and run I can crawl I can bark I can roar83 32 39I can walk and run I can crawl I can bark I can roar86 I can walk and run I can crawl I can bark I can roar87 I can walk and run I can crawl I can bark I can roar88 39I can walk and run I can crawl I can bark I can roar86 I can walk and run I can crawl I can bark I can roar91 I can walk and run I can crawl I can bark I can roar92
3 863 860 873Đầu ra: & nbsp; & nbsp; & nbsp; & nbsp;Concrete Methods in Abstract Base Classes : & nbsp; & nbsp; các phương pháp cụ thể trong các lớp cơ sở trừu tượng: & nbsp; các lớp bê tông chỉ chứa các phương pháp cụ thể (bình thường) trong khi các lớp trừu tượng có thể chứa cả các phương pháp cụ thể và phương pháp trừu tượng. Lớp cụ thể cung cấp việc triển khai các phương thức trừu tượng, lớp cơ sở trừu tượng cũng có thể cung cấp một triển khai bằng cách gọi các phương thức thông qua Super (). Python3 859 860 861 863 860 865 859 860 869Output: 863 860 873Đầu ra: & nbsp; & nbsp; & nbsp; & nbsp;Abstract Properties : Python3& nbsp; & nbsp; các phương pháp cụ thể trong các lớp cơ sở trừu tượng: & nbsp; các lớp bê tông chỉ chứa các phương pháp cụ thể (bình thường) trong khi các lớp trừu tượng có thể chứa cả các phương pháp cụ thể và phương pháp trừu tượng. Lớp cụ thể cung cấp việc triển khai các phương thức trừu tượng, lớp cơ sở trừu tượng cũng có thể cung cấp một triển khai bằng cách gọi các phương thức thông qua Super (). 87I can walk and run I can crawl I can bark I can roar63 863 860 865 859 860 869
& nbsp; & nbsp; các phương pháp cụ thể trong các lớp cơ sở trừu tượng: & nbsp; các lớp bê tông chỉ chứa các phương pháp cụ thể (bình thường) trong khi các lớp trừu tượng có thể chứa cả các phương pháp cụ thể và phương pháp trừu tượng. Lớp cụ thể cung cấp việc triển khai các phương thức trừu tượng, lớp cơ sở trừu tượng cũng có thể cung cấp một triển khai bằng cách gọi các phương thức thông qua Super ().Abstract Class Instantiation : Python3Đầu ra: & nbsp; & nbsp; 85 86 87 88I can walk and run I can crawl I can bark I can roar9 30I can walk and run I can crawl I can bark I can roar0 300I can walk and run I can crawl I can bark I can roar2 I can walk and run I can crawl I can bark I can roar5 303I can walk and run I can crawl I can bark I can roar7 I can walk and run I can crawl I can bark I can roar8__ 383 85 86 87 88I can walk and run I can crawl I can bark I can roar9 39 30I can walk and run I can crawl I can bark I can roar08 32 85 86 87 383Trong ví dụ trên, lớp cơ sở không thể được khởi tạo vì nó chỉ có phiên bản trừu tượng của phương thức getter thuộc tính. Nếu Python cho phép tạo một đối tượng cho các lớp trừu tượng thì sử dụng đối tượng đó nếu bất kỳ ai gọi phương thức trừu tượng, nhưng không có triển khai thực tế để gọi. Vì vậy, chúng tôi sử dụng một lớp trừu tượng làm mẫu và theo nhu cầu, chúng tôi mở rộng nó và xây dựng nó trước khi chúng tôi có thể sử dụng nó. Do thực tế, một lớp trừu tượng không phải là một lớp cụ thể, nó không thể được khởi tạo. Khi chúng ta tạo một đối tượng cho lớp trừu tượng, nó sẽ gây ra lỗi. & Nbsp; & nbsp; I can walk and run I can crawl I can bark I can roar9 39 30I can walk and run I can crawl I can bark I can roar20 32 85 86 87 383Trong ví dụ trên, lớp cơ sở không thể được khởi tạo vì nó chỉ có phiên bản trừu tượng của phương thức getter thuộc tính. Nếu Python cho phép tạo một đối tượng cho các lớp trừu tượng thì sử dụng đối tượng đó nếu bất kỳ ai gọi phương thức trừu tượng, nhưng không có triển khai thực tế để gọi. Vì vậy, chúng tôi sử dụng một lớp trừu tượng làm mẫu và theo nhu cầu, chúng tôi mở rộng nó và xây dựng nó trước khi chúng tôi có thể sử dụng nó. Do thực tế, một lớp trừu tượng không phải là một lớp cụ thể, nó không thể được khởi tạo. Khi chúng ta tạo một đối tượng cho lớp trừu tượng, nó sẽ gây ra lỗi. & Nbsp; & nbsp; I can walk and run I can crawl I can bark I can roar9 39 30I can walk and run I can crawl I can bark I can roar32 32 85 86 87 383Trong ví dụ trên, lớp cơ sở không thể được khởi tạo vì nó chỉ có phiên bản trừu tượng của phương thức getter thuộc tính. Nếu Python cho phép tạo một đối tượng cho các lớp trừu tượng thì sử dụng đối tượng đó nếu bất kỳ ai gọi phương thức trừu tượng, nhưng không có triển khai thực tế để gọi. Vì vậy, chúng tôi sử dụng một lớp trừu tượng làm mẫu và theo nhu cầu, chúng tôi mở rộng nó và xây dựng nó trước khi chúng tôi có thể sử dụng nó. Do thực tế, một lớp trừu tượng không phải là một lớp cụ thể, nó không thể được khởi tạo. Khi chúng ta tạo một đối tượng cho lớp trừu tượng, nó sẽ gây ra lỗi. & Nbsp; & nbsp; I can walk and run I can crawl I can bark I can roar9 39 30I can walk and run I can crawl I can bark I can roar44 32 343 860 345Output: I can walk and run I can crawl I can bark I can roar8Tại sao phương pháp trừu tượng được sử dụng trong Python? Tại sao phương pháp trừu tượng được sử dụng trong Python?Trừu tượng được sử dụng để ẩn chức năng nội bộ của hàm từ người dùng. Người dùng chỉ tương tác với việc triển khai cơ bản của chức năng, nhưng hoạt động bên trong được ẩn. Người dùng quen thuộc với "Chức năng nào" nhưng họ không biết "nó hoạt động như thế nào."to hide the internal functionality of the function from the users. The users only interact with the basic implementation of the function, but inner working is hidden. User is familiar with that "what function does" but they don't know "how it does."to hide the internal functionality of the function from the users. The users only interact with the basic implementation of the function, but inner working is hidden. User is familiar with that "what function does" but they don't know "how it does." Việc sử dụng phương pháp trừu tượng là gì?Các phương pháp trừu tượng là những loại phương pháp không yêu cầu thực hiện cho tuyên bố của nó. Những phương pháp này không có cơ thể có nghĩa là không thực hiện. Một vài thuộc tính của một phương thức trừu tượng là: một phương thức trừu tượng trong Java được khai báo thông qua từ khóa Tóm tắt.methods that don't require implementation for its declaration. These methods don't have a body which means no implementation. A few properties of an abstract method are: An abstract method in Java is declared through the keyword “abstract”.methods that don't require implementation for its declaration. These methods don't have a body which means no implementation. A few properties of an abstract method are: An abstract method in Java is declared through the keyword “abstract”. Tại sao chúng ta cần Python lớp trừu tượng?Trong Python, các lớp cơ sở trừu tượng cung cấp một kế hoạch chi tiết cho các lớp cụ thể.Họ không chứa việc thực hiện.Thay vào đó, họ cung cấp một giao diện và đảm bảo rằng các lớp cụ thể xuất phát được thực hiện đúng.Các lớp cơ sở trừu tượng không thể được khởi tạo.provide a blueprint for concrete classes. They don't contain implementation. Instead, they provide an interface and make sure that derived concrete classes are properly implemented. Abstract base classes cannot be instantiated.provide a blueprint for concrete classes. They don't contain implementation. Instead, they provide an interface and make sure that derived concrete classes are properly implemented. Abstract base classes cannot be instantiated. Tại sao chúng ta tuyên bố các phương pháp trừu tượng?Các phương thức trừu tượng chỉ xác định một hợp đồng mà các lớp dẫn xuất phải thực hiện.Đó là cách bạn đảm bảo rằng họ thực sự luôn luôn như vậy.define a contract that derived classes must implement. It's is the way how you ensure that they actually always will.define a contract that derived classes must implement. It's is the way how you ensure that they actually always will. |