Phương thức trừu tượng trong OOP Python là gì?

Lớp trừu tượng là một khái niệm rất quan trọng của lập trình hướng đối tượng. Đó là một thực hành tốt về nguyên tắc DRY [Don't Repeat Yourself]. Trong một dự án lớn, việc sao chép mã xấp xỉ bằng với việc sử dụng lại lỗi và một nhà phát triển không thể nhớ chi tiết tất cả các lớp. Do đó, sẽ rất hữu ích khi sử dụng một lớp trừu tượng để định nghĩa một giao diện chung cho các triển khai khác nhau

Tóm lược. trong hướng dẫn này, bạn sẽ tìm hiểu về các lớp Trừu tượng trong Python và cách sử dụng nó để tạo bản thiết kế cho các lớp khác

Giới thiệu về các lớp trừu tượng Python

Trong lập trình hướng đối tượng, lớp trừu tượng là lớp không thể khởi tạo. Tuy nhiên, bạn có thể tạo các lớp kế thừa từ một lớp trừu tượng

Thông thường, bạn sử dụng một lớp trừu tượng để tạo bản thiết kế cho các lớp khác

Tương tự, một phương thức trừu tượng là một phương thức không có triển khai. Một lớp trừu tượng có thể có hoặc không bao gồm các phương thức trừu tượng

Python không hỗ trợ trực tiếp các lớp trừu tượng. Nhưng nó cung cấp một mô-đun cho phép bạn định nghĩa các lớp trừu tượng

Để định nghĩa một lớp trừu tượng, bạn sử dụng mô-đun

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
4 [lớp cơ sở trừu tượng]

Mô-đun

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
4 cung cấp cho bạn cơ sở hạ tầng để xác định các lớp cơ sở trừu tượng

Ví dụ

from abc import ABC class AbstractClassName[ABC]: pass

Code language: Python [python]

Để xác định một phương thức trừu tượng, bạn sử dụng trình trang trí

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
0

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]

Ví dụ lớp trừu tượng Python

Giả sử rằng bạn cần phát triển một chương trình trả lương cho một công ty

Công ty có hai nhóm nhân viên. nhân viên toàn thời gian và nhân viên theo giờ. Các nhân viên toàn thời gian nhận được một mức lương cố định trong khi các nhân viên theo giờ được trả lương theo giờ cho các dịch vụ của họ

Chương trình tính lương cần in ra bảng lương bao gồm tên nhân viên và mức lương hàng tháng của họ

Để lập mô hình chương trình tính lương theo cách hướng đối tượng, bạn có thể sử dụng các lớp sau.

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
1,

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
2,

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
3 và

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
4

Để cấu trúc chương trình, chúng tôi sẽ sử dụng các mô-đun, trong đó mỗi lớp được đặt trong một mô-đun [hoặc tệp] riêng biệt

Lớp nhân viên

Lớp

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
1 đại diện cho nhân viên, toàn thời gian hoặc theo giờ. Lớp

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
1 phải là lớp trừu tượng vì chỉ có nhân viên toàn thời gian và nhân viên theo giờ, không tồn tại nhân viên chung

Lớp

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
1 phải có một thuộc tính trả về tên đầy đủ của một nhân viên. Ngoài ra, nên có một phương pháp tính lương. Phương pháp tính lương phải là một phương pháp trừu tượng

Sau đây định nghĩa lớp trừu tượng

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
1

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
1

Lớp nhân viên toàn thời gian

Lớp

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
2 kế thừa từ lớp

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
1. Nó sẽ cung cấp triển khai cho phương thức

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
11

Vì nhân viên toàn thời gian nhận được mức lương cố định, bạn có thể khởi tạo mức lương trong hàm tạo của lớp

Sau đây minh họa lớp

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
2

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
6

Lớp HourlyEmployee

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
3 cũng kế thừa từ lớp

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
1. Tuy nhiên, nhân viên hàng giờ được trả theo giờ làm việc và tỷ lệ của họ. Do đó, bạn có thể khởi tạo thông tin này trong hàm tạo của lớp

Để tính lương cho nhân viên theo giờ, bạn nhân số giờ làm việc và tỷ lệ

Sau đây cho thấy lớp

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
3

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
0

Lớp tiền lương

Lớp

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
4 sẽ có phương thức thêm một nhân viên vào danh sách nhân viên và in ra bảng lương

Vì nhân viên toàn thời gian và nhân viên làm việc theo giờ có cùng giao diện [thuộc tính ______117 và phương pháp ____111]. Do đó, lớp Bảng lương không cần phân biệt

Sau đây cho thấy lớp

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
4

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
5

chương trình chính

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
60 sau đây sử dụng các lớp

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
2,

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
3 và

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
4 để in ra bảng lương của năm nhân viên

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
0

đầu ra

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
1

Khi nào nên sử dụng các lớp trừu tượng

Trong thực tế, bạn sử dụng các lớp trừu tượng để chia sẻ mã giữa một số lớp liên quan chặt chẽ. Trong chương trình bảng lương, tất cả các lớp con của lớp

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
1 đều có chung thuộc tính

from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass

Code language: Python [python]
65

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

Phương thức trừu tượng là phương thức được khai báo nhưng không được triển khai trong mã .

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

Một lớp trừu tượng là một lớp, nhưng không phải là lớp mà bạn có thể trực tiếp tạo đối tượng . Mục đích của nó là để định nghĩa các lớp khác trông như thế nào, tôi. e. những phương thức và thuộc tính nào họ dự kiến ​​​​sẽ có.

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

Các phương thức trừu tượng là những loại phương thức không yêu cầu triển khai khai báo . Các phương thức này không có phần thân 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 “abstract”.

phương pháp trừu tượng giải thích với ví dụ là gì?

Các lớp và phương thức trừu tượng . là lớp bị hạn chế không được dùng để tạo đối tượng [để truy cập được phải kế thừa từ lớp khác]. phương pháp trừu tượng. chỉ có thể được sử dụng trong lớp trừu tượng và không có phần thân . Phần thân được cung cấp bởi lớp con [kế thừa từ].

Chủ Đề