- Lớp trừu tượng trong Python là gì?
- Các loại phương thức trong Python dựa trên việc triển khai
- Cách khai báo một phương thức trừu tượng trong Python
- Các lớp trừu tượng trong Python
- Các lớp trừu tượng có thể chứa nhiều lớp con hơn không?
- Các trường hợp khác nhau để tạo đối tượng lớp Trừu tượng
Một lớp trừu tượng là lớp chứa một hoặc nhiều phương thức trừu tượng. Phương thức trừu tượng là phương thức vừa được định nghĩa nhưng chưa được triển khai
Các tuyên bố trên có vẻ không rõ ràng với các điều khoản mới. Hãy thảo luận chi tiết về chúng trong bài viết này
Các loại phương thức trong PythonDựa trên việc thực hiện các phương pháp có thể được chia thành hai loại
- phương pháp thực hiện
- Phương pháp chưa triển khai
Một phương thức có cả tên phương thức và thân phương thức, phương thức đó được gọi là phương thức đã triển khai. Chúng còn được gọi là phương pháp cụ thể hoặc phương pháp phi trừu tượng. Các phương pháp mà chúng ta đã thấy trong các chương trước được thực hiện. e cũng có tên phương thức và phần thân
Phương pháp chưa triển khaiMột phương thức chỉ có tên phương thức và không có thân phương thức, phương thức đó được gọi là phương thức chưa thực hiện. Chúng còn được gọi là phương pháp không cụ thể hoặc trừu tượng
Cách khai báo một phương thức trừu tượng trong PythonCác phương thức trừu tượng, trong python, được khai báo bằng cách sử dụng trình trang trí @abstractmethod. Để hiểu rõ hơn, xin vui lòng xem hình ảnh dưới đây
Phương thức 'một' là phương thức trừu tượng. Phương pháp 'hai' là phương pháp không trừu tượng. Vì một phương thức trừu tượng có mặt trong lớp 'Demo', nên nó được gọi là lớp Trừu tượng
Phương thức trừu tượng trong PythonTừ ví dụ trên, chúng ta có thể hiểu trừu tượng là lớp không có triển khai. Vài điểm về nó
- Bằng cách sử dụng trình trang trí @abstractmethod, chúng ta có thể khai báo một phương thức là một phương thức trừu tượng
- Trình trang trí @abstractmethod trình bày trong mô-đun abc. Chúng ta nên nhập mô-đun abc để sử dụng trình trang trí
- Vì phương thức trừu tượng là một phương thức chưa được thực hiện, chúng ta cần đặt một câu lệnh vượt qua, nếu không nó sẽ dẫn đến lỗi
- Lớp chứa các phương thức trừu tượng được gọi là lớp trừu tượng
- Đối với các phương thức trừu tượng, việc triển khai phải được cung cấp trong lớp con của lớp trừu tượng
Chương trình. Các phương thức trừu tượng [demo1. py]
from abc import * class Demo1[ABC]: @abstractmethod def m1[self]: pass @abstractmethod def m2[self]: pass def m3[self]: print["Implemented method"]
đầu ra. Không có đầu ra vì không có đối tượng nào được tạo. Chỉ là một bản demo để hiển thị các phương thức trừu tượng
- Mọi lớp trừu tượng trong Python phải được bắt nguồn từ lớp ABC có trong mô-đun abc. Lớp trừu tượng có thể chứa Trình tạo, Biến, phương thức trừu tượng, phương thức không trừu tượng và Lớp con
- Các phương thức trừu tượng nên được triển khai trong lớp con hoặc lớp con của lớp trừu tượng. [bản trình diễn2. py]
- Nếu trong lớp con, việc triển khai phương thức trừu tượng không được cung cấp, thì lớp con đó sẽ tự động trở thành lớp trừu tượng. [bản trình diễn3. py]
- Sau đó, nếu bất kỳ lớp nào kế thừa lớp con này, thì lớp con đó sẽ cung cấp việc triển khai các phương thức trừu tượng. [bản trình diễn4. py]
- Không thể tạo đối tượng cho lớp trừu tượng. [bản trình diễn4. py hoặc demo8. py]
- Chúng ta có thể tạo các đối tượng cho các lớp con của các lớp trừu tượng để truy cập các phương thức đã triển khai
Chương trình. Lớp trừu tượng [demo2. py]
from abc import ABC, abstractmethod #Abstract Class class Bank[ABC]: def bank_info[self]: print["Welcome to bank"] @abstractmethod def interest[self]: "Abstarct Method" pass #Sub class/ child class of abstract class class SBI[Bank]: def interest[self]: "Implementation of abstract method" print["In sbi bank 5 rupees interest"] s= SBI[] s.bank_info [] s.interest[]
đầu ra
Trong ví dụ trên, Bank là một lớp trừu tượng có phương thức trừu tượng intertest[]. Lớp SBI là lớp con của lớp Bank, vì vậy lớp SBI sẽ cung cấp triển khai cho phương thức trừu tượng có sẵn trong lớp trừu tượng Bank. Một đối tượng được tạo cho phân lớp, đó là SBI, và phương thức thực hiện interest[] được gọi là
Nếu lớp con không cung cấp triển khai các phương thức trừu tượngNếu một lớp con kế thừa một lớp trừu tượng, không cung cấp triển khai cho các phương thức trừu tượng, thì lớp con đó cũng sẽ được coi là một lớp trừu tượng. Việc tạo đối tượng cho các lớp con như vậy cũng không thực hiện được. Thậm chí, nếu chúng ta cố gắng tạo một đối tượng thì sẽ xảy ra lỗi
Chương trình. Lớp trừu tượng [demo3. py]
from abc import ABC, abstractmethod #Abstract Class class Bank[ABC]: def bank_info[self]: print["Welcome to bank"] @abstractmethod def interest[self]: "Abstarct Method" pass #Sub class/ child class of abstract class class SBI[Bank]: def balance[self]: print["Balance is 100"] s= SBI[] s.bank_info [] s.balance[]
đầu ra.
Trong ví dụ trên, Bank là một lớp trừu tượng, có phương thức trừu tượng intertest[]. SBI là lớp con của lớp Bank, vì vậy SBI sẽ cung cấp triển khai cho phương thức trừu tượng interest[] của lớp Bank, nhưng nó không cung cấp. Vì vậy, lớp SBI cũng sẽ được coi là một lớp trừu tượng
Do đó, nếu chúng ta cố gắng tạo một đối tượng cho nó, thì chúng ta sẽ nhận được TypeError. Bây giờ, nếu chúng ta định nghĩa một lớp kế thừa lớp SBI, ở đó chúng ta nên cung cấp triển khai cho phương thức interest
Chương trình. lớp trừu tượng và lớp con của lớp trừu tượng [demo4. py]from abc import ABC, abstractmethod #Abstract Class class Bank[ABC]: def bank_info[self]: print["Welcome to bank"] @abstractmethod def interest[self]: "Abstarct Method" pass #Sub class/ child class of abstract class class SBI[Bank]: def balance[self]: print["Balance is 100"] class Sub1[SBI]: def interest[self]: print["In sbi bank interest is 5 rupees"] s= Sub1[] s.bank_info [] s.balance[] s.interest[]
đầu ra
Như đã thảo luận, lớp trừu tượng có thể chứa các phương thức đã triển khai cùng với các phương thức trừu tượng. Trong ví dụ trên, phương thức bank_info[] là một phương thức cụ thể có triển khai cùng với tên trong lớp trừu tượng
Chương trình. Lớp trừu tượng cũng có thể chứa các phương thức cụ thể [demo5. py]
from abc import ABC, abstractmethod #Abstract Class class Bank[ABC]: def bank_info[self]: print["Welcome to bank"] @abstractmethod def interest[self]: "Abstarct Method" pass def offers[self]: print["Providing offers"] #Sub class/ child class of abstract class class SBI[Bank]: def interest[self]: print["In SBI bank 5 rupees interest"] s= SBI[] s.bank_info [] s.interest[]
đầu ra
Có, một lớp trừu tượng có thể chứa nhiều hơn một lớp con. Nếu các lớp con khác nhau yêu cầu các kiểu triển khai khác nhau, thì trong trường hợp đó, một lớp trừu tượng có thể chứa nhiều hơn một lớp con
Chương trình. các lớp trừu tượng chứa nhiều lớp con hơn [demo6. py]
from abc import ABC, abstractmethod #Abstract Class class Bank[ABC]: def bank_info[self]: print["Welcome to bank"] @abstractmethod def interest[self]: "Abstarct Method" pass def offers[self]: print["Providing offers"] #Sub class/ child class of abstract class class SBI[Bank]: def interest[self]: print["In SBI bank 5 rupees interest"] class HDFC[Bank]: def interest[self]: print["In HDFC 7 rupees interest"] s= SBI[] h=HDFC[] s.bank_info[] s.interest[] h.bank_info[] h.interest[]
đầu ra
Chương trình. các lớp trừu tượng trong python [demo7. py]
from abc import ABC, abstractmethod class One[ABC]: @abstractmethod def calculate[self, a]: pass def m1[self]: print["implemented method"] class Square[One]: def calculate[self, a]: print["square: ", [a*a]] class Cube[One]: def calculate[self, a]: print["cube: ", [a*a*a]] s = Square[] c = Cube[] s.calculate[2] c.calculate[2]
đầu ra
Trường hợp 1. Nếu bất kỳ lớp nào đang kế thừa lớp ABC và lớp đó không chứa phương thức trừu tượng, thì chúng ta có thể tạo một đối tượng cho lớp đó
Chương trình. Các trường hợp khác nhau để tạo đối tượng lớp Trừu tượng [demo8. py]
from abc import * class Demo[ABC]: def m[self]: print["calling"] d=Demo[] d.m[]
đầu ra.
Trường hợp2. Nếu lớp nào đang kế thừa lớp ABC thì lớp đó sẽ trở thành lớp trừu tượng. Nếu lớp đó chứa một phương thức trừu tượng, thì việc tạo đối tượng là không thể đối với lớp trừu tượng
Chương trình. Các trường hợp khác nhau để tạo đối tượng lớp Trừu tượng [demo9. py]
________số 8_______đầu ra.
Trường hợp3. Nếu bất kỳ lớp nào không kế thừa lớp ABC, thì chúng ta có thể tạo một đối tượng cho lớp đó mặc dù nó chứa một phương thức trừu tượng. Theo ví dụ dưới đây, lớp không kế thừa lớp ABC, nhưng nó chứa các phương thức trừu tượng
Chương trình. Các trường hợp khác nhau để tạo đối tượng lớp Trừu tượng [demo10. py]
from abc import * class Demo: @abstractmethod def m[self]: pass def n[self]: print["Implemented method"] t=Demo[] t.m[] t.n[]
đầu ra.
Trong bài viết tiếp theo, tôi sẽ thảo luận về Giao diện trong Python. Ở đây, trong bài viết này, tôi cố gắng giải thích Các lớp trừu tượng trong Python bằng các ví dụ. Tôi hy vọng bạn thích bài viết Các lớp trừu tượng trong Python với các ví dụ này. Tôi muốn có phản hồi của bạn. Vui lòng gửi phản hồi, câu hỏi hoặc nhận xét của bạn về bài viết này