Đóng gói trong Python ví dụ thời gian thực

Khi làm việc với một ngôn ngữ lập trình hướng đối tượng như Python, encapsulation trong Python là một trong 4 khái niệm quan trọng cần hiểu. Ba cái còn lại là kế thừa, đa hình và trừu tượng

Đóng gói là gì?

Khi làm việc với các lớp và xử lý dữ liệu nhạy cảm, việc cung cấp quyền truy cập toàn cục cho tất cả các biến được sử dụng trong chương trình không phải là một lựa chọn tốt. Đóng gói cung cấp một cách để chúng tôi truy cập các biến cần thiết mà không cung cấp cho chương trình quyền truy cập chính thức vào bất kỳ biến nào trong số đó

Việc cập nhật, sửa đổi hoặc xóa dữ liệu khỏi các biến có thể được thực hiện thông qua việc sử dụng các phương pháp được xác định cụ thể cho mục đích. Lợi ích của việc sử dụng phương pháp lập trình này là cải thiện khả năng kiểm soát dữ liệu đầu vào và bảo mật tốt hơn

Đóng gói trong Python là gì?

Khái niệm đóng gói giống nhau trong tất cả các ngôn ngữ lập trình hướng đối tượng. Sự khác biệt được nhìn thấy khi các khái niệm được áp dụng cho các ngôn ngữ cụ thể

So với các ngôn ngữ như Java cung cấp công cụ sửa đổi quyền truy cập [công khai hoặc riêng tư] cho các biến và phương thức, Python cung cấp quyền truy cập vào tất cả các biến và phương thức trên toàn cầu

Kiểm tra phần trình diễn dưới đây về cách các biến có thể dễ dàng được truy cập

class Person:
    def __init__[self, name, age=0]:
        self.name = name
        self.age = age

    def display[self]:
        print[self.name]
        print[self.age]

person = Person['Dev', 30]
#accessing using class method
person.display[]
#accessing directly from outside
print[person.name]
print[person.age]

đầu ra

Dev
30
Dev
30

Vì chúng tôi không có công cụ sửa đổi quyền truy cập trong Python, nên chúng tôi sẽ sử dụng một số phương pháp khác nhau để kiểm soát quyền truy cập của các biến trong chương trình Python

Phương pháp kiểm soát quyền truy cập

Có nhiều phương thức được Python cung cấp để giới hạn quyền truy cập biến và phương thức trong chương trình. Hãy đi qua các phương pháp chi tiết

Sử dụng dấu gạch dưới đơn

Một quy ước lập trình Python phổ biến để xác định một biến riêng tư là đặt trước nó một dấu gạch dưới. Bây giờ, điều này không thực sự tạo ra bất kỳ sự khác biệt nào về phía trình biên dịch của mọi thứ. Biến vẫn có thể truy cập như bình thường. Nhưng là một quy ước mà các lập trình viên đã chọn, nó nói với các lập trình viên khác rằng các biến hoặc phương thức chỉ được sử dụng trong phạm vi của lớp

Xem ví dụ bên dưới

class Person:
    def __init__[self, name, age=0]:
        self.name = name
        self._age = age

    def display[self]:
        print[self.name]
        print[self._age]

person = Person['Dev', 30]
#accessing using class method
person.display[]
#accessing directly from outside
print[person.name]
print[person._age]

đầu ra

Dev
30
Dev
30

Rõ ràng là truy cập biến không thay đổi. Nhưng chúng ta có thể làm bất cứ điều gì để thực sự làm cho nó riêng tư?

Sử dụng dấu gạch dưới kép

Nếu bạn muốn làm cho các thành viên trong lớp tôi. e. các phương thức và biến riêng tư, thì bạn nên đặt trước chúng hai dấu gạch dưới. Nhưng Python cung cấp một số loại hỗ trợ cho công cụ sửa đổi riêng tư. Cơ chế này được gọi là xáo trộn tên. Với điều này, vẫn có thể truy cập các thành viên lớp từ bên ngoài nó

Tên Mangling

Trong Python, bất kỳ mã định danh nào có __Var đều được trình thông dịch python viết lại thành _Classname__Var và tên lớp vẫn là tên lớp hiện tại. Cơ chế đổi tên này được gọi là Name Mangling trong Python

Trong ví dụ dưới đây, trong Lớp người, biến tuổi đã được thay đổi và nó có tiền tố là dấu gạch dưới kép ở đầu

class Person:
    def __init__[self, name, age=0]:
        self.name = name
        self.__age = age

    def display[self]:
        print[self.name]
        print[self.__age]

person = Person['Dev', 30]
#accessing using class method
person.display[]
#accessing directly from outside
print['Trying to access variables from outside the class ']
print[person.name]
print[person.__age]

đầu ra

Dev
30
Trying to access variables from outside the class
Dev
Traceback [most recent call last]:
  File "Person.py", line 16, in 
    print[person.__age]
AttributeError: 'Person' object has no attribute '__age'

Bạn có thể quan sát rằng các biến vẫn được truy cập bằng các phương thức, đây là một phần của lớp. Nhưng bạn không thể truy cập tuổi trực tiếp từ bên ngoài vì đây là biến riêng tư

Sử dụng các phương thức Getter và Setter để truy cập các biến riêng tư

Nếu bạn muốn truy cập và thay đổi các biến riêng tư, nên sử dụng các phương thức truy cập [getter] và bộ biến đổi [phương thức setter], vì chúng là một phần của Class

class Person:
    def __init__[self, name, age=0]:
        self.name = name
        self.__age = age

    def display[self]:
        print[self.name]
        print[self.__age]

    def getAge[self]:
        print[self.__age]

    def setAge[self, age]:
        self.__age = age

person = Person['Dev', 30]
#accessing using class method
person.display[]
#changing age using setter
person.setAge[35]
person.getAge[]

đầu ra

Dev
30
35

Lợi ích của việc đóng gói trong Python

Đóng gói không chỉ đảm bảo luồng dữ liệu tốt hơn mà còn bảo vệ dữ liệu khỏi các nguồn bên ngoài. Khái niệm đóng gói làm cho mã tự cung cấp. Nó rất hữu ích ở cấp độ triển khai, vì nó ưu tiên các câu hỏi loại 'làm thế nào', để lại những câu hỏi phức tạp. Bạn nên ẩn dữ liệu trong đơn vị để dễ dàng đóng gói và cũng để bảo mật dữ liệu

Nhu cầu đóng gói trong Python là gì

Những lý do sau đây cho thấy tại sao các nhà phát triển thấy Encapsulation tiện dụng và tại sao khái niệm Hướng đối tượng vượt xa nhiều ngôn ngữ lập trình

  • Đóng gói giúp đạt được sự tương tác được xác định rõ trong mọi ứng dụng
  • Khái niệm Hướng đối tượng tập trung vào khả năng sử dụng lại mã trong Python. [KHÔ - Đừng lặp lại chính mình]
  • Các ứng dụng có thể được duy trì an toàn
  • Nó đảm bảo tính linh hoạt của mã thông qua một tổ chức mã thích hợp
  • Nó thúc đẩy trải nghiệm mượt mà cho người dùng mà không để lộ bất kỳ sự phức tạp nào của back-end
  • Nó cải thiện khả năng đọc mã. Bất kỳ thay đổi nào trong một phần của mã sẽ không ảnh hưởng đến phần khác
  • Đóng gói đảm bảo bảo vệ dữ liệu và tránh vô tình truy cập dữ liệu. Dữ liệu được bảo vệ có thể được truy cập bằng các phương pháp được thảo luận ở trên

Đóng gói trong Python là, dữ liệu được ẩn bên ngoài định nghĩa đối tượng. Nó cho phép các nhà phát triển phát triển trải nghiệm thân thiện với người dùng. Điều này cũng hữu ích trong việc bảo mật dữ liệu khỏi các vi phạm, vì mã được bảo mật cao và không thể truy cập bởi các nguồn bên ngoài

Ví dụ thời gian thực đóng gói là gì?

Hãy xem xét ví dụ thời gian thực bên dưới. đóng gói. Là người lái xe, bạn biết cách khởi động ô tô bằng cách nhấn nút khởi động và thông tin chi tiết bên trong về thao tác khởi động được ẩn khỏi bạn . Vì vậy, toàn bộ quá trình bắt đầu được ẩn khỏi bạn, nếu không, chúng tôi có thể cho biết hoạt động bắt đầu được gói gọn từ bạn.

Bạn có thể đưa ra một ví dụ thực tế về đóng gói và trừu tượng hóa không?

Tôi có thể nghĩ về sự tương tác giữa người dùng và điện thoại di động như một ví dụ về sự đóng gói. Người dùng không cần phải hiểu hoạt động bên trong của điện thoại để sử dụng nó, điều này được gọi là trừu tượng hóa

Làm thế nào chúng ta có thể sử dụng đóng gói trong cơ sở thời gian thực?

Cặp đi học là một trong những ví dụ thực tế nhất về Đóng gói. Cặp đi học có thể đựng sách, bút, v.v. . Ví dụ thời gian thực 2. Khi bạn đăng nhập vào các tài khoản email của mình như Gmail, Yahoo Mail hoặc Rediff mail, có rất nhiều quy trình nội bộ diễn ra trong phần phụ trợ và bạn không kiểm soát được nó.

Việc sử dụng đóng gói trong Python là gì?

Đóng gói được sử dụng để hạn chế quyền truy cập vào các phương thức và biến . Trong đóng gói, mã và dữ liệu được gói cùng nhau trong một đơn vị để không bị sửa đổi do tai nạn. Đóng gói là một cơ chế gói dữ liệu [biến] và mã hoạt động trên dữ liệu [phương thức] lại với nhau thành một đơn vị.

Chủ Đề