Ví dụ phương pháp trừu tượng python

Trong bài viết này, tôi sẽ thảo luận về Các lớp trừu tượng trong Python với các ví dụ. Vui lòng đọc bài viết trước của chúng tôi, nơi chúng tôi đã thảo luận về Đa hình trong Python. Là một phần của bài viết này, chúng ta sẽ thảo luận về các con trỏ sau đây có liên quan đến các lớp Trừu tượng trong Python
  1. Lớp trừu tượng trong Python là gì?
  2. Các loại phương thức trong Python dựa trên việc triển khai
  3. Cách khai báo một phương thức trừu tượng trong Python
  4. Các lớp trừu tượng trong Python
  5. Các lớp trừu tượng có thể chứa nhiều lớp con hơn không?
  6. Các trường hợp khác nhau để tạo đối tượng lớp Trừu tượng
Lớp trừu tượng trong Python là gì?

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 Python

Dựa trên việc thực hiện các phương pháp có thể được chia thành hai loại

  1. phương pháp thực hiện
  2. Phương pháp chưa triển khai
phương pháp thực hiện

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 khai

Mộ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 Python

Cá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 Python

Từ 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ó

  1. 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
  2. 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í
  3. 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
  4. Lớp chứa các phương thức trừu tượng được gọi là lớp trừu tượng
  5. Đố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

Các lớp trừu tượng trong Python
  1. 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
  2. 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]
  3. 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]
  4. 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]
  5. 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]
  6. 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ượng

Nế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

Lớp trừu tượng cũng có thể chứa các phương thức cụ thể

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ác lớp trừu tượng có thể chứa nhiều lớp con hơn không?

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

Các trường hợp khác nhau để tạo đối tượng lớp Trừu tượng

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

Tại sao nên sử dụng các phương thức trừu tượng trong Python?

Trong Python, các lớp cơ sở trừu tượng cung cấp bản thiết kế cho các lớp cụ thể . Chúng không chứa triển khai. Thay vào đó, chúng cung cấp một giao diện và đảm bảo rằng các lớp cụ thể dẫn xuất được triển khai đúng cách.

Phương pháp trừu tượng ABC trong Python là gì?

abc. phương thức trừu tượng[chức năng] Một trình trang trí biểu thị các phương thức trừu tượng . Sử dụng trình trang trí này yêu cầu siêu dữ liệu của lớp là ABCMeta hoặc có nguồn gốc từ nó. Không thể khởi tạo một lớp có siêu dữ liệu bắt nguồn từ ABCMeta trừ khi tất cả các phương thức và thuộc tính trừu tượng của nó bị ghi đè.

Sự khác biệt giữa phương thức trừu tượng và phương thức cụ thể trong Python là gì?

Các phương thức trừu tượng là những phương thức cần được triển khai trong lớp con/lớp con. Các phương thức trừu tượng chỉ được định nghĩa trong lớp cha/lớp cha [lớp Trừu tượng] nhưng không có phần thân. Một phương thức không trừu tượng. e. nếu một định nghĩa phương thức được đưa ra trong cùng một lớp thì nó được khai báo được gọi là cụ thể

Chủ Đề