Lớp trừu tượng trong Python w3schools

Các lớp trừu tượng là các lớp chứa một hoặc nhiều phương thức trừu tượng. Một phương thức trừu tượng là một phương thức được khai báo, nhưng không chứa phần thực thi. Các lớp trừu tượng không thể được khởi tạo và yêu cầu các lớp con cung cấp các triển khai cho các phương thức trừu tượng

Bạn có thể thấy điều này trong các ví dụ sau

class AbstractClass:
    
    def do_something[self]:
        pass
    
    
class B[AbstractClass]:
    pass

a = AbstractClass[]
b = B[]

Nếu chúng ta bắt đầu chương trình này, chúng ta sẽ thấy rằng đây không phải là một lớp trừu tượng, bởi vì

  • chúng ta có thể khởi tạo một thể hiện từ
  • chúng tôi không bắt buộc phải triển khai do_something trong định nghĩa lớp của B

Ví dụ của chúng tôi đã triển khai một trường hợp kế thừa đơn giản không liên quan gì đến một lớp trừu tượng. Trên thực tế, bản thân Python không cung cấp các lớp trừu tượng. Tuy nhiên, Python đi kèm với một mô-đun cung cấp cơ sở hạ tầng để xác định Lớp cơ sở trừu tượng [ABC]. Mô-đun này được gọi là - vì những lý do rõ ràng - abc

Đoạn mã Python sau sử dụng mô-đun abc và định nghĩa một lớp cơ sở trừu tượng

from abc import ABC, abstractmethod
 
class AbstractClassExample[ABC]:
 
    def __init__[self, value]:
        self.value = value
        super[].__init__[]
    
    @abstractmethod
    def do_something[self]:
        pass

Bây giờ chúng ta sẽ định nghĩa một lớp con bằng cách sử dụng lớp trừu tượng đã định nghĩa trước đó. Bạn sẽ nhận thấy rằng chúng tôi chưa triển khai phương thức do_something, mặc dù chúng tôi bắt buộc phải triển khai nó, bởi vì phương thức này được trang trí như một phương thức trừu tượng với trình trang trí "abstractmethod". Chúng tôi nhận được một ngoại lệ là không thể khởi tạo DoAdd42

class DoAdd42[AbstractClassExample]:
    pass

x = DoAdd42[4]

ĐẦU RA

---------------------------------------------------------------------------
TypeError                                 Traceback [most recent call last]
 in 
      2     pass
      3 
----> 4 x = DoAdd42[4]
TypeError: Can't instantiate abstract class DoAdd42 with abstract methods do_something

Chúng ta sẽ làm đúng cách trong ví dụ sau, trong đó chúng ta định nghĩa hai lớp kế thừa từ lớp trừu tượng của chúng ta

class DoAdd42[AbstractClassExample]:

    def do_something[self]:
        return self.value + 42
    
class DoMul42[AbstractClassExample]:
   
    def do_something[self]:
        return self.value * 42
    
x = DoAdd42[10]
y = DoMul42[10]

print[x.do_something[]]
print[y.do_something[]]

ĐẦU RA

52
420

Một lớp bắt nguồn từ một lớp trừu tượng không thể được khởi tạo trừ khi tất cả các phương thức trừu tượng của nó bị ghi đè

Bạn có thể nghĩ rằng các phương thức trừu tượng không thể được triển khai trong lớp cơ sở trừu tượng. ấn tượng này là sai. Một phương thức trừu tượng có thể có một triển khai trong lớp trừu tượng. Ngay cả khi chúng được triển khai, người thiết kế các lớp con sẽ buộc phải ghi đè việc triển khai. Giống như trong các trường hợp kế thừa "bình thường" khác, phương thức trừu tượng có thể được gọi bằng cơ chế gọi super[]. Điều này cho phép cung cấp một số chức năng cơ bản trong phương thức trừu tượng, có thể được làm phong phú thêm bằng cách triển khai lớp con

Lớp trừu tượng trong Python là gì?

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 . Một phương thức trừu tượng là một phương thức được khai báo, nhưng không chứa phần thực thi. Các lớp trừu tượng không thể được khởi tạo và yêu cầu các lớp con cung cấp các triển khai cho các phương thức trừu tượng.

Một ví dụ về Trừu tượng trong Python là gì?

Hãy lấy một ví dụ khác - Khi chúng tôi sử dụng điều khiển TV để tăng âm lượng . Chúng tôi không biết cách nhấn phím tăng âm lượng của TV. Chúng tôi chỉ biết nhấn nút "+" để tăng âm lượng. Đó chính xác là sự trừu tượng hoạt động trong khái niệm hướng đối tượng.

__ init __ trong Python là gì?

Phương thức __init__ là tương đương Python với hàm tạo C++ theo cách tiếp cận hướng đối tượng . Hàm __init__ được gọi mỗi khi một đối tượng được tạo từ một lớp. Phương thức __init__ cho phép lớp khởi tạo các thuộc tính của đối tượng và không phục vụ mục đích nào khác. Nó chỉ được sử dụng trong các lớp.

Trừu tượng và đóng gói trong Python là gì?

Trừu tượng hóa đang ẩn chi tiết và triển khai mã. Đóng gói đang ẩn dữ liệu và kiểm soát khả năng hiển thị của mã .

Chủ Đề