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
4 [lớp cơ sở trừu tượng]Code language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
Mô-đun
4 cung cấp cho bạn cơ sở hạ tầng để xác định các lớp cơ sở trừu tượngCode language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
Ví dụ
Code language: Python [python]
from abc import ABC class AbstractClassName[ABC]: pass
Để xác định một phương thức trừu tượng, bạn sử dụng trình trang trí
0Code language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
Code language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
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.
1,Code language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
2,Code language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
3 vàCode language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
4Code language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
Để 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
1 đại diện cho nhân viên, toàn thời gian hoặc theo giờ. LớpCode language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
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 chungCode language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
Lớp
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ượngCode language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
Sau đây định nghĩa lớp trừu tượng
1Code language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
1Code language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
Lớp nhân viên toàn thời gian
Lớp
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ứcCode language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
11Code language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
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
2Code language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
6Code language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
Lớp HourlyEmployee
3 cũng kế thừa từ lớpCode language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
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ớpCode language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
Để 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
3Code language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
0Code language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
Lớp tiền lương
Lớp
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ươngCode language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
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
4Code language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
5Code language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
chương trình chính
60 sau đây sử dụng các lớpCode language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
2,Code language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
3 vàCode language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
4 để in bảng lương của năm nhân viênCode language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
0Code language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
đầu ra
1Code language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
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
1 đều có chung thuộc tínhCode language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass
65Code language: Python [python]
from abc import ABC, abstractmethod class AbstractClassName[ABC]: @abstractmethod def abstract_method_name[self]: pass