Đóng gói có nghĩa là lưu trữ hoặc đặt dữ liệu ở một nơi duy nhất để làm cho dữ liệu dễ đọc và nhỏ gọn ở một nơi. Trong khi đó, trừu tượng hóa dữ liệu trong lập trình python có nghĩa là ẩn các chức năng bên trong đang hoạt động trên ứng dụng bằng cách sử dụng mã và chỉ hiển thị thông tin cần thiết [thuộc tính lớp]
Theo thuật ngữ trừu tượng hóa, chúng tôi muốn nói đến việc cung cấp tên cho mọi thứ để khi nhìn thấy tên đó, lập trình viên chịu trách nhiệm có thể hiểu ý tưởng về toàn bộ chương trình đang làm gì ở hậu trường.
Trừu tượng hóa và đóng gói trong Python
- Khi chúng tôi đang phát triển bất kỳ ứng dụng lớn hoặc doanh nghiệp nào. Sau đó, nên sử dụng các khái niệm về đóng gói dữ liệu và trừu tượng hóa dữ liệu trong phương pháp mã hóa
- Cả hai thuật ngữ khác nhau về nghĩa nhưng có liên quan gián tiếp với nhau
- Có hai loại phương pháp lập trình, lập trình thủ tục và lập trình hướng đối tượng
- Đóng gói và Trừu tượng hóa theo cách tiếp cận hướng đối tượng được thiết kế để viết mã dễ đọc và dễ đọc
- Đóng gói có nghĩa là lưu trữ mã của từng chức năng ở một nơi. Trong khi tính trừu tượng chịu trách nhiệm chỉ hiển thị thông tin không nhạy cảm cho người dùng bằng cách ẩn thông tin nhạy cảm
Ưu điểm của tính trừu tượng trong Python .
- Tính trừu tượng giúp giảm nỗ lực lập trình và giảm độ phức tạp mã hóa
- Nó được sử dụng để ẩn các chi tiết không mong muốn từ người dùng
- Nó cho phép tập trung vào khái niệm chính
Hãy thử hiểu khái niệm trừu tượng trong lập trình python bằng một ví dụ thực tế
Giả sử bạn làm việc trong lĩnh vực ngân hàng và một người đến hỏi bạn về việc mở tài khoản. Một người đang cung cấp cho bạn các chi tiết bên dưới để mở tài khoản
Nhưng trên thực tế, không phải tất cả các thông tin được cung cấp là bắt buộc để mở tài khoản tại ngân hàng. Chúng tôi chỉ cần sử dụng thông tin hữu ích cần thiết để mở tài khoản tại ngân hàng. Đó là tên, địa chỉ, thông tin thuế, số liên lạc, v.v.
Các chi tiết có viền đỏ là đủ để mở tài khoản tại ngân hàng. Do đó, với mục đích này, khái niệm trừu tượng được sử dụng
Kết luận .
Trừu tượng hóa dữ liệu không có nghĩa là tránh lưu trữ dữ liệu, điều đó không cần thiết cho một số hoạt động cụ thể. Là một lập trình viên, bạn nên xác định một phương pháp riêng biệt để lưu trữ dữ liệu ít quan trọng hơn để có thể sử dụng sau này khi cần.
Ví dụ xây dựng cách tiếp cận đóng gói và trừu tượng hóa dữ liệu trong Python
class Person: def __init__[self]: self.name = "Jack Matte" def bio[self]: self.addr = "Bakers street, London" self.taxInfo = "HUAPK29971" self.contact = "01-777-523-342" print[self.addr, self.taxInfo, self.contact] def interest[self]: self.favFood = "Chinese" self.hobbies = "Python Programming" self.bloodGroup = "A+" print[self.favFood, self.hobbies, self.bloodGroup] obj = Person[] print[obj.name] obj.bio[] obj.interest[]
Hiển thị đầu ra
Giải thích chi tiết .
- Không có khoa học tên lửa hoặc logic đặc biệt trong chương trình này
- Điều này chỉ để giúp bạn hình dung ý nghĩa thực sự của việc đóng gói và trừu tượng hóa dữ liệu
- Ở đây trong chương trình này, việc đóng gói mà chúng tôi đạt được bằng cách lưu trữ mã của từng mô-đun tại một vị trí cụ thể mà tôi. phương pháp khác nhau
- Sự trừu tượng hóa mà chúng ta đạt được bằng cách chia toàn bộ thông tin hoặc dữ liệu thành danh mục i. e. [ sinh học[] và sở thích[] ] so that it can be reused.
Quan trọng . Nhiều sinh viên luôn nhầm lẫn giữa thuật ngữ lớp trừu tượng và lớp trừu tượng. Ở đây lớp trừu tượng không giống như lớp trừu tượng trong python. Một lớp trừu tượng là một khái niệm khác. Tìm hiểu thêm về lớp Trừu tượng trong Python. 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
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 Các 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ác lớp cơ sở trừu tượng hoạt động như thế nào.
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
# Python program showing
# abstract base class work
from
abc
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 roar1
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_______1_______5
I can walk and run I can crawl I can bark I can roar4_______1_______7
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
True True0
True True1
True True2
I can walk and run I can crawl I can bark I can roar2
True True4
I can walk and run I can crawl I can bark I can roar4_______11_______6
I can walk and run I can crawl I can bark I can roar4_______1_______7
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
True True0
True True1
Abstract Base Class subclass3
Abstract Base Class subclass4
Abstract Base Class subclass5
Abstract Base Class subclass6
I can walk and run I can crawl I can bark I can roar2
Abstract Base Class subclass8
I can walk and run I can crawl I can bark I can roar4_______11_______6
I can walk and run I can crawl I can bark I can roar4_______1_______7
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
True True0
True True1
Abstract Base Class subclass3
Abstract Base Class subclass4
Can't instantiate abstract class parent with abstract methods geeks child class9
Abstract Base Class subclass6
I can walk and run I can crawl I can bark I can roar2
Traceback [most recent call last]: File "/home/ffe4267d930f204512b7f501bb1bc489.py", line 19, in c=Animal[] TypeError: Can't instantiate abstract class Animal with abstract methods move2
I can walk and run I can crawl I can bark I can roar4_______11_______6
I can walk and run I can crawl I can bark I can roar4_______1_______7
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
True True0
True True1
Abstract Base Class subclass3
Abstract Base Class subclass4
# Python program showing
3Abstract Base Class subclass6
I can walk and run I can crawl I can bark I can roar2
# Python program showing
6
I can walk and run I can crawl I can bark I can roar4_______11_______6
I can walk and run I can crawl I can bark I can roar4_______1_______7
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
True True0
True True1
Abstract Base Class subclass3
Abstract Base Class subclass4
# abstract base class work
7Abstract Base Class subclass6
# abstract base class work
9
from
0from
1 from
2
from
3
from
4from
1 from
6
from
7
from
0from
1 abc
0
from
3
from
4____325_______1 abc
4
from
7
đầu ra.
I have 3 sides I have 4 sides I have 5 sides I have 6 sides
mã 2.
Python3
# Python program showing
# abstract base class work
from
abc
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 roar1
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_______1_______7
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_______11_______0
True True1
True True2
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_______1_______7
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_______11_______0
True True1
Abstract Base Class subclass3
Abstract Base Class subclass4
I can walk and run I can crawl I can bark I can roar21
Abstract Base Class subclass6
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_______1_______7
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_______11_______0
True True1
Abstract Base Class subclass3
Abstract Base Class subclass4
I can walk and run I can crawl I can bark I can roar33
Abstract Base Class subclass6
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_______1_______7
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_______11_______0
True True1
Abstract Base Class subclass3
Abstract Base Class subclass4
I can walk and run I can crawl I can bark I can roar45
Abstract Base Class subclass6
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_______1_______7
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_______11_______0
True True1
Abstract Base Class subclass3
Abstract Base Class subclass4
I can walk and run I can crawl I can bark I can roar57
Abstract Base Class subclass6
True True1
# abstract base class work
9
from
0from
1
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
from
4____325_______1
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
from
0from
1
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
from
4____325_______1
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
Thực hiện 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
# Python program showing
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
abc
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_______1_______7
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_______11_______0
True True1
True True2
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_______1_______7
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_______11_______0
True True1
Abstract Base Class subclass3
Abstract Base Class subclass4
True True01
Abstract Base Class subclass6
# abstract base class work
9
Abstract Base Class subclass3
Abstract Base Class subclass4
True True06
True True07
Abstract Base Class subclass3
Abstract Base Class subclass4
True True10
True True11
đầu ra.
True True
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 hỏi lớp cơ sở 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
True True12
True True13
I can walk and run I can crawl I can bark I can roar0
abc
from
abc
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 roar1
I can walk and run I can crawl I can bark I can roar2
True True21
I can walk and run I can crawl I can bark I can roar4_______1_______7
True True24
I can walk and run I can crawl I can bark I can roar9
True True0
True True1
Abstract Base Class subclass3
Abstract Base Class subclass4
True True30
Abstract Base Class subclass6
I can walk and run I can crawl I can bark I can roar2
True True33
I can walk and run I can crawl I can bark I can roar4_______1_______7
True True24
I can walk and run I can crawl I can bark I can roar9
True True0
True True1
True True40
True True41
True True1
Abstract Base Class subclass3
Abstract Base Class subclass4
True True45
Abstract Base Class subclass6
# abstract base class work
9
True True48_______325_______1
True True50
True True51
đầu ra.
Abstract Base Class subclass
Trong chương trình trên, chúng ta có thể gọi các phương thức trong các 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 xác định chúng bằng @abstractproperty.
Python3
# Python program showing
True True53
I can walk and run I can crawl I can bark I can roar0
abc
from
abc
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 roar1
I can walk and run I can crawl I can bark I can roar2
True True61
I can walk and run I can crawl I can bark I can roar4_______11_______63
True True64
I can walk and run I can crawl I can bark I can roar4_______1_______7
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_______11_______0
True True1
True True71
True True72
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
True True75
I can walk and run I can crawl I can bark I can roar4_______11_______77
I can walk and run I can crawl I can bark I can roar4_______1_______7
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_______11_______0
True True1
True True71
True True01
True True86
True True86
True True88
True True89
I can walk and run I can crawl I can bark I can roar4_______11_______48
from
1True True93
I can walk and run I can crawl I can bark I can roar4_______24_______3
True True96
True True97
True True98
I can walk and run I can crawl I can bark I can roar4_______24_______3
Abstract Base Class subclass01
True True86
True True48_______325_______1
Abstract Base Class subclass05
Abstract Base Class subclass3
Abstract Base Class subclass07
đầu ra.
Can't instantiate abstract class parent with abstract methods geeks child class
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 bất kỳ 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
# Python program showing
Abstract Base Class subclass09
Abstract Base Class subclass10
from
abc
I can walk and run I can crawl I can bark I can roar0
Abstract Base Class subclass14
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_______1_______5
I can walk and run I can crawl I can bark I can roar4_______1_______7
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_______11_______0
True True1
True True2
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_______1_______7
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_______11_______0
True True1
Abstract Base Class subclass3
Abstract Base Class subclass4
I can walk and run I can crawl I can bark I can roar21
Abstract Base Class subclass6
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_______1_______7
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_______11_______0
True True1
Abstract Base Class subclass3
Abstract Base Class subclass4
I can walk and run I can crawl I can bark I can roar33
Abstract Base Class subclass6
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_______1_______7
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_______11_______0
True True1
Abstract Base Class subclass3
Abstract Base Class subclass4
I can walk and run I can crawl I can bark I can roar45
Abstract Base Class subclass6
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_______1_______7
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_______11_______0
True True1
Abstract Base Class subclass3
Abstract Base Class subclass4
I can walk and run I can crawl I can bark I can roar57
Abstract Base Class subclass6
Abstract Base Class subclass74____325_______1
Abstract Base Class subclass76
đầu ra.
Traceback [most recent call last]: File "/home/ffe4267d930f204512b7f501bb1bc489.py", line 19, in c=Animal[] TypeError: Can't instantiate abstract class Animal with abstract methods move
Ghi chú cá nhân của tôi arrow_drop_up
Tiết kiệm