Các lớp trừu tượng trong Python
Cải thiện bài viết
Lưu bài viết
Thích bài viết
- Độ khó. Dễ dàng
- Cập nhật lần cuối. 19 tháng 3 năm 2021
Cải thiện bài viết
Lưu bài viết
Một lớp trừu tượng có thể được coi là bản thiết kế cho các lớp khác. Nó cho phép bạn tạo một tập hợp các phương thức phải được tạo trong bất kỳ lớp con nào được xây dựng từ lớp trừu tượng. Một lớp chứa một hoặc nhiều phương thức trừu tượng được gọi là lớp 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 có phần thực hiện. Trong khi chúng tôi đang thiết kế các đơn vị chức năng lớn, chúng tôi sử dụng một lớp trừu tượng. Khi chúng tôi muốn cung cấp một giao diện chung cho các triển khai khác nhau của một thành phần, chúng tôi sử dụng một lớp trừu tượng.
Tại sao nên sử dụng Lớp cơ sở trừu tượng.
Bằng cách định nghĩa một lớp cơ sở trừu tượng, bạn có thể định nghĩa một Giao diện Chương trình Ứng dụng [API] chung cho một tập hợp các lớp con. Khả năng này đặc biệt hữu ích trong các tình huống mà bên thứ ba sẽ cung cấp các triển khai, chẳng hạn như với plugin, nhưng cũng có thể giúp ích cho bạn khi làm việc trong một nhóm lớn hoặc với một cơ sở mã lớn, nơi mà việc ghi nhớ tất cả các lớp là khó khăn .
Cách hoạt động của các lớp Cơ sở Trừu tượng.
Theo mặc định, Python không cung cấp các lớp trừu tượng. Python đi kèm với một mô-đun cung cấp cơ sở để xác định các lớp Cơ sở Trừu tượng [ABC] và tên mô-đun đó là ABC. ABC hoạt động bằng cách trang trí các phương thức của lớp cơ sở dưới dạng trừu tượng và sau đó đăng ký các lớp cụ thể dưới dạng triển khai của cơ sở trừu tượng. Một phương thức trở nên trừu tượng khi được trang trí bằng từ khóa @abstractmethod. Ví dụ –
mã 1
Python3
I can walk and run I can crawl I can bark I can roar22
I can walk and run I can crawl I can bark I can roar23
________ 324 ________ 325 ________ 00 ________ 01
I can walk and run I can crawl I can bark I can roar2
I can walk and run I can crawl I can bark I can roar3
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar5
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar7
I can walk and run I can crawl I can bark I can roar8
I can walk and run I can crawl I can bark I can roar9
I can walk and run I can crawl I can bark I can roar00
I can walk and run I can crawl I can bark I can roar01
I can walk and run I can crawl I can bark I can roar02
I can walk and run I can crawl I can bark I can roar2
I can walk and run I can crawl I can bark I can roar04
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar06
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar7
I can walk and run I can crawl I can bark I can roar8
I can walk and run I can crawl I can bark I can roar9
I can walk and run I can crawl I can bark I can roar00
I can walk and run I can crawl I can bark I can roar01
I can walk and run I can crawl I can bark I can roar33____234
I can walk and run I can crawl I can bark I can roar35
I can walk and run I can crawl I can bark I can roar36
I can walk and run I can crawl I can bark I can roar2
I can walk and run I can crawl I can bark I can roar38
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar06
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar7
I can walk and run I can crawl I can bark I can roar8
I can walk and run I can crawl I can bark I can roar9
I can walk and run I can crawl I can bark I can roar00
I can walk and run I can crawl I can bark I can roar01
I can walk and run I can crawl I can bark I can roar33____234
I can walk and run I can crawl I can bark I can roar99
I can walk and run I can crawl I can bark I can roar36
I can walk and run I can crawl I can bark I can roar2
I can walk and run I can crawl I can bark I can roar22
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar06
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar7
I can walk and run I can crawl I can bark I can roar8
I can walk and run I can crawl I can bark I can roar9
I can walk and run I can crawl I can bark I can roar00
I can walk and run I can crawl I can bark I can roar01
I can walk and run I can crawl I can bark I can roar33____234
I can walk and run I can crawl I can bark I can roar223
I can walk and run I can crawl I can bark I can roar36
I can walk and run I can crawl I can bark I can roar2
I can walk and run I can crawl I can bark I can roar226
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar06
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar7
I can walk and run I can crawl I can bark I can roar8
I can walk and run I can crawl I can bark I can roar9
I can walk and run I can crawl I can bark I can roar00
I can walk and run I can crawl I can bark I can roar01
I can walk and run I can crawl I can bark I can roar33____234
I can walk and run I can crawl I can bark I can roar237
I can walk and run I can crawl I can bark I can roar36
I can walk and run I can crawl I can bark I can roar239
I can walk and run I can crawl I can bark I can roar240
I can walk and run I can crawl I can bark I can roar241
I can walk and run I can crawl I can bark I can roar242
I can walk and run I can crawl I can bark I can roar243
________ 3244 ________ 3241 ________ 3246
I can walk and run I can crawl I can bark I can roar247
I can walk and run I can crawl I can bark I can roar240
I can walk and run I can crawl I can bark I can roar241
I can walk and run I can crawl I can bark I can roar250
I can walk and run I can crawl I can bark I can roar243
I can walk and run I can crawl I can bark I can roar244
I can walk and run I can crawl I can bark I can roar241
I can walk and run I can crawl I can bark I can roar254
I can walk and run I can crawl I can bark I can roar247
Đầu ra.
I can walk and run I can crawl I can bark I can roar6
Mã 2.
Python3
I can walk and run I can crawl I can bark I can roar22
I can walk and run I can crawl I can bark I can roar23
________ 324 ________ 325 ________ 00 ________ 01
I can walk and run I can crawl I can bark I can roar2
I can walk and run I can crawl I can bark I can roar03
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar7
I can walk and run I can crawl I can bark I can roar06
I can walk and run I can crawl I can bark I can roar9
I can walk and run I can crawl I can bark I can roar00
I can walk and run I can crawl I can bark I can roar01
I can walk and run I can crawl I can bark I can roar02
I can walk and run I can crawl I can bark I can roar2
I can walk and run I can crawl I can bark I can roar12
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar7
I can walk and run I can crawl I can bark I can roar06
I can walk and run I can crawl I can bark I can roar9
I can walk and run I can crawl I can bark I can roar00
I can walk and run I can crawl I can bark I can roar01
I can walk and run I can crawl I can bark I can roar33____234
I can walk and run I can crawl I can bark I can roar21
I can walk and run I can crawl I can bark I can roar36
I can walk and run I can crawl I can bark I can roar2
I can walk and run I can crawl I can bark I can roar24
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar7
I can walk and run I can crawl I can bark I can roar06
I can walk and run I can crawl I can bark I can roar9
I can walk and run I can crawl I can bark I can roar00
I can walk and run I can crawl I can bark I can roar01
I can walk and run I can crawl I can bark I can roar33____234
I can walk and run I can crawl I can bark I can roar33
I can walk and run I can crawl I can bark I can roar36
I can walk and run I can crawl I can bark I can roar2
I can walk and run I can crawl I can bark I can roar36
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar7
I can walk and run I can crawl I can bark I can roar06
I can walk and run I can crawl I can bark I can roar9
I can walk and run I can crawl I can bark I can roar00
I can walk and run I can crawl I can bark I can roar01
I can walk and run I can crawl I can bark I can roar33____234
I can walk and run I can crawl I can bark I can roar45
I can walk and run I can crawl I can bark I can roar36
I can walk and run I can crawl I can bark I can roar2
I can walk and run I can crawl I can bark I can roar48
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar7
I can walk and run I can crawl I can bark I can roar06
I can walk and run I can crawl I can bark I can roar9
I can walk and run I can crawl I can bark I can roar00
I can walk and run I can crawl I can bark I can roar01
I can walk and run I can crawl I can bark I can roar33____234
I can walk and run I can crawl I can bark I can roar57
I can walk and run I can crawl I can bark I can roar36
I can walk and run I can crawl I can bark I can roar01
I can walk and run I can crawl I can bark I can roar239
I can walk and run I can crawl I can bark I can roar240
I can walk and run I can crawl I can bark I can roar241
I can walk and run I can crawl I can bark I can roar63
I can walk and run I can crawl I can bark I can roar64
I can walk and run I can crawl I can bark I can roar244____3241
I can walk and run I can crawl I can bark I can roar67
I can walk and run I can crawl I can bark I can roar68
I can walk and run I can crawl I can bark I can roar240
I can walk and run I can crawl I can bark I can roar241
I can walk and run I can crawl I can bark I can roar71
I can walk and run I can crawl I can bark I can roar64
I can walk and run I can crawl I can bark I can roar244
I can walk and run I can crawl I can bark I can roar241
I can walk and run I can crawl I can bark I can roar75
I can walk and run I can crawl I can bark I can roar68
Đầu ra.
I can walk and run I can crawl I can bark I can roar
Triển khai thông qua phân lớp.
Bằng cách phân lớp trực tiếp từ cơ sở, chúng ta có thể tránh được việc phải đăng ký lớp một cách rõ ràng. Trong trường hợp này, quản lý lớp Python được sử dụng để nhận ra PluginImplementation là triển khai PluginBase trừu tượng.
Python3
I can walk and run I can crawl I can bark I can roar22
I can walk and run I can crawl I can bark I can roar78
I can walk and run I can crawl I can bark I can roar79
I can walk and run I can crawl I can bark I can roar0
I can walk and run I can crawl I can bark I can roar25
I can walk and run I can crawl I can bark I can roar2
I can walk and run I can crawl I can bark I can roar83
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar7
I can walk and run I can crawl I can bark I can roar86
I can walk and run I can crawl I can bark I can roar9
I can walk and run I can crawl I can bark I can roar00
I can walk and run I can crawl I can bark I can roar01
I can walk and run I can crawl I can bark I can roar02
I can walk and run I can crawl I can bark I can roar2
I can walk and run I can crawl I can bark I can roar92
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar7
I can walk and run I can crawl I can bark I can roar86
I can walk and run I can crawl I can bark I can roar9
I can walk and run I can crawl I can bark I can roar00
I can walk and run I can crawl I can bark I can roar01
I can walk and run I can crawl I can bark I can roar33____234
I can walk and run I can crawl I can bark I can roar001
I can walk and run I can crawl I can bark I can roar36
I can walk and run I can crawl I can bark I can roar239
I can walk and run I can crawl I can bark I can roar33
I can walk and run I can crawl I can bark I can roar34
I can walk and run I can crawl I can bark I can roar006
I can walk and run I can crawl I can bark I can roar007
I can walk and run I can crawl I can bark I can roar33
I can walk and run I can crawl I can bark I can roar34____1010
I can walk and run I can crawl I can bark I can roar011
Đầu ra.
I can walk and run I can crawl I can bark I can roar0
Một tác dụng phụ của việc sử dụng phân lớp trực tiếp là có thể tìm thấy tất cả các triển khai plugin của bạn bằng cách yêu cầu lớp cơ sở cung cấp danh sách các lớp đã biết bắt nguồn từ nó.
Các phương thức cụ thể trong các lớp cơ sở trừu tượng.
Các lớp cụ thể chỉ chứa các phương thức cụ thể [bình thường] trong khi các lớp trừu tượng có thể chứa cả các phương thức cụ thể và phương thức trừu tượng. Lớp cụ thể cung cấp triển khai các phương thức trừu tượng, lớp cơ sở trừu tượng cũng có thể cung cấp triển khai bằng cách gọi các phương thức qua super[].
Hãy xem qua ví dụ để gọi phương thức sử dụng super[].
Python3
I can walk and run I can crawl I can bark I can roar012
I can walk and run I can crawl I can bark I can roar013
I can walk and run I can crawl I can bark I can roar0
I can walk and run I can crawl I can bark I can roar25
________ 324 ________ 325 ________ 00 ________ 01
I can walk and run I can crawl I can bark I can roar2
I can walk and run I can crawl I can bark I can roar021
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar7
I can walk and run I can crawl I can bark I can roar024
I can walk and run I can crawl I can bark I can roar9
I can walk and run I can crawl I can bark I can roar00
I can walk and run I can crawl I can bark I can roar01
I can walk and run I can crawl I can bark I can roar33____234
I can walk and run I can crawl I can bark I can roar030
I can walk and run I can crawl I can bark I can roar36
I can walk and run I can crawl I can bark I can roar2
I can walk and run I can crawl I can bark I can roar033
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar7
I can walk and run I can crawl I can bark I can roar024
I can walk and run I can crawl I can bark I can roar9
I can walk and run I can crawl I can bark I can roar00
________ 101 ________ 1040 ________ 1041
I can walk and run I can crawl I can bark I can roar01
I can walk and run I can crawl I can bark I can roar33____234
I can walk and run I can crawl I can bark I can roar045
I can walk and run I can crawl I can bark I can roar36
I can walk and run I can crawl I can bark I can roar239
________ 1048 ________ 3241 ________ 1050
I can walk and run I can crawl I can bark I can roar051
Đầu ra.
I can walk and run I can crawl I can bark I can roar3
Trong chương trình trên, chúng ta có thể gọi các phương thức trong lớp trừu tượng bằng cách sử dụng super[].
Thuộc tính trừu tượng.
Các lớp trừu tượng bao gồm các thuộc tính ngoài các phương thức, bạn có thể yêu cầu các thuộc tính trong các lớp cụ thể bằng cách định nghĩa chúng bằng @abstractproperty.
Python3
I can walk and run I can crawl I can bark I can roar22
I can walk and run I can crawl I can bark I can roar053
I can walk and run I can crawl I can bark I can roar0
I can walk and run I can crawl I can bark I can roar25
________ 324 ________ 325 ________ 00 ________ 01
I can walk and run I can crawl I can bark I can roar2
I can walk and run I can crawl I can bark I can roar061
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar063____1064
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar7
I can walk and run I can crawl I can bark I can roar86
I can walk and run I can crawl I can bark I can roar9
I can walk and run I can crawl I can bark I can roar00
I can walk and run I can crawl I can bark I can roar01
I can walk and run I can crawl I can bark I can roar071
I can walk and run I can crawl I can bark I can roar072
I can walk and run I can crawl I can bark I can roar2
I can walk and run I can crawl I can bark I can roar92
I can walk and run I can crawl I can bark I can roar075
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar077
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar7
I can walk and run I can crawl I can bark I can roar86
I can walk and run I can crawl I can bark I can roar9
I can walk and run I can crawl I can bark I can roar00
I can walk and run I can crawl I can bark I can roar01
I can walk and run I can crawl I can bark I can roar071
I can walk and run I can crawl I can bark I can roar001
I can walk and run I can crawl I can bark I can roar086
I can walk and run I can crawl I can bark I can roar086
I can walk and run I can crawl I can bark I can roar088
I can walk and run I can crawl I can bark I can roar089
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar048
I can walk and run I can crawl I can bark I can roar241
I can walk and run I can crawl I can bark I can roar093
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar33
I can walk and run I can crawl I can bark I can roar096
I can walk and run I can crawl I can bark I can roar097
I can walk and run I can crawl I can bark I can roar098
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar33
I can walk and run I can crawl I can bark I can roar301
I can walk and run I can crawl I can bark I can roar086
I can walk and run I can crawl I can bark I can roar048
I can walk and run I can crawl I can bark I can roar241
I can walk and run I can crawl I can bark I can roar305
I can walk and run I can crawl I can bark I can roar33
I can walk and run I can crawl I can bark I can roar307
Đầu ra.
I can walk and run I can crawl I can bark I can roar9
Trong ví dụ trên, lớp Cơ sở không thể được khởi tạo vì nó chỉ có một phiên bản trừu tượng của phương thức getter thuộc tính.
Khởi tạo lớp trừu tượng.
Các lớp trừu tượng không đầy đủ vì chúng có các phương thức không có ai. Nếu python cho phép tạo một đối tượng cho các lớp trừu tượng thì sử dụng đối tượng đó nếu có ai gọi phương thức trừu tượng, nhưng không có triển khai thực tế nào để gọi. Vì vậy, chúng tôi sử dụng một lớp trừu tượng làm mẫu và theo nhu cầu, chúng tôi mở rộng nó và xây dựng trên nó trước khi chúng tôi có thể sử dụng nó. Vì lớp trừu tượng không phải là lớp cụ thể nên không thể khởi tạo được. Khi chúng ta tạo một đối tượng cho lớp trừu tượng, nó sẽ phát sinh lỗi.
Python3
I can walk and run I can crawl I can bark I can roar22
I can walk and run I can crawl I can bark I can roar309
I can walk and run I can crawl I can bark I can roar310
_______ 324 _______ 325 _______ 00 _______ 2314
I can walk and run I can crawl I can bark I can roar2
I can walk and run I can crawl I can bark I can roar03
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar5
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar7
I can walk and run I can crawl I can bark I can roar06
I can walk and run I can crawl I can bark I can roar9
I can walk and run I can crawl I can bark I can roar00
I can walk and run I can crawl I can bark I can roar01
I can walk and run I can crawl I can bark I can roar02
I can walk and run I can crawl I can bark I can roar2
I can walk and run I can crawl I can bark I can roar12
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar7
I can walk and run I can crawl I can bark I can roar06
I can walk and run I can crawl I can bark I can roar9
I can walk and run I can crawl I can bark I can roar00
I can walk and run I can crawl I can bark I can roar01
I can walk and run I can crawl I can bark I can roar33____234
I can walk and run I can crawl I can bark I can roar21
I can walk and run I can crawl I can bark I can roar36
I can walk and run I can crawl I can bark I can roar2
I can walk and run I can crawl I can bark I can roar24
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar7
I can walk and run I can crawl I can bark I can roar06
I can walk and run I can crawl I can bark I can roar9
I can walk and run I can crawl I can bark I can roar00
I can walk and run I can crawl I can bark I can roar01
I can walk and run I can crawl I can bark I can roar33____234
I can walk and run I can crawl I can bark I can roar33
I can walk and run I can crawl I can bark I can roar36
I can walk and run I can crawl I can bark I can roar2
I can walk and run I can crawl I can bark I can roar36
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar7
I can walk and run I can crawl I can bark I can roar06
I can walk and run I can crawl I can bark I can roar9
I can walk and run I can crawl I can bark I can roar00
I can walk and run I can crawl I can bark I can roar01
I can walk and run I can crawl I can bark I can roar33____234
I can walk and run I can crawl I can bark I can roar45
I can walk and run I can crawl I can bark I can roar36
I can walk and run I can crawl I can bark I can roar2
I can walk and run I can crawl I can bark I can roar48
I can walk and run I can crawl I can bark I can roar4
I can walk and run I can crawl I can bark I can roar7
I can walk and run I can crawl I can bark I can roar06
I can walk and run I can crawl I can bark I can roar9
I can walk and run I can crawl I can bark I can roar00
I can walk and run I can crawl I can bark I can roar01
I can walk and run I can crawl I can bark I can roar33____234
I can walk and run I can crawl I can bark I can roar57
I can walk and run I can crawl I can bark I can roar36
_______2374____3241____2376
Đầu ra.
I can walk and run I can crawl I can bark I can roar2
Ghi chú cá nhân của tôi arrow_drop_up
Tiết kiệm